Example #1
0
 /// <summary>
 /// 保存索引信息。
 /// </summary>
 public override void SaveIndexInfo()
 {
     lock (m_locker)
     {
         uint indexPosition = (uint)m_fileStream.Position;
         var  indexInfos    = new List <Byte>();
         foreach (var item in m_fileIndexes)
         {
             indexInfos.AddRange(item.Value.GetEncodeData());
         }
         foreach (var item in m_deletedIndexes)
         {
             indexInfos.AddRange(item.GetEncodeData());
         }
         var indexInfo = indexInfos.ToArray();
         if (indexInfo.Length > 0)
         {
             indexInfo = DESCrypto.Encrypt(indexInfo, m_number); //加密索引数据
         }
         m_fileStream.Position = m_packageInfo.IndexOffset;      //将文件偏移重置为索引偏移起始位置
         m_fileStream.Write(indexInfo, 0, indexInfo.Length);
         m_fileStream.Flush();
         SavePackageInfo(m_fileStream);
         m_fileStream.Position = indexPosition;
     }
 }
Example #2
0
 public void SaveIndexInfo()
 {
     lock (m_locker)
     {
         uint        position = (uint)this.m_fileStream.Position;
         List <byte> list     = new List <byte>();
         foreach (KeyValuePair <string, IndexInfo> pair in this.m_fileIndexes)
         {
             list.AddRange(pair.Value.GetEncodeData());
         }
         foreach (IndexInfo info in this.m_deletedIndexes)
         {
             list.AddRange(info.GetEncodeData());
         }
         byte[] toEncrypt = list.ToArray();
         if (toEncrypt.Length > 0)
         {
             toEncrypt = DESCrypto.Encrypt(toEncrypt, this.m_number);
         }
         this.m_fileStream.Position = this.m_packageInfo.IndexOffset;
         this.m_fileStream.Write(toEncrypt, 0, toEncrypt.Length);
         this.m_fileStream.Flush();
         this.SavePackageInfo(this.m_fileStream);
         this.m_fileStream.Position = position;
     }
 }