Exemplo n.º 1
0
 /// <summary>
 /// 读取内容标识为nContentID的所有内容
 /// </summary>
 /// <param name="lsStream">内存流列表</param>
 /// <param name="nContentID">内容标识</param>
 /// <returns>成功->true,反之->false</returns>
 public override bool ReadContent(out List <MemoryStream> lsStream, int nContentID)
 {
     if (!base.ReadContent(out lsStream, nContentID))
     {
         return(false);
     }
     try
     {
         //解密
         //_DecryptFile.ExecuteDecrypt(ref _fStream);
         if (_fStream.CanSeek && _fStream.CanRead)
         {
             _fStream.Seek(0, SeekOrigin.Begin);
         }
         List <ContentSection> lsSecs = new List <ContentSection>();
         while (_fStream.Position != _fStream.Length)
         {
             ContentSection conSec = new BinaryContentSection();
             if (conSec.Deserialize(ref _fStream))
             {
                 _fStream.Seek(conSec.GetEndPos(), SeekOrigin.Begin);
                 if (conSec.GetIndex() == nContentID)
                 {
                     lsSecs.Add(conSec);
                 }
             }
             else
             {
                 break;
             }
         }
         if (lsSecs.Count > 0)
         {
             long lStartPos, lEndPos, lSecLen;
             for (int i = 0; i < lsSecs.Count; i++)
             {
                 lStartPos = lsSecs[i].GetStartPos();
                 lEndPos   = lsSecs[i].GetEndPos();
                 lSecLen   = lsSecs[i].GetSectionLen();
                 _fStream.Seek(lStartPos, SeekOrigin.Begin);
                 while (lStartPos < lEndPos)
                 {
                     byte[] arrContent = new byte[lSecLen];
                     _fStream.Read(arrContent, 0, (int)lSecLen);
                     lStartPos += lSecLen;
                     MemoryStream mStream = new MemoryStream(arrContent);
                     lsStream.Add(mStream);
                 }
             }
         }
         //加密
         //_EncryptFile.ExecuteEncrypt(ref _fStream);
         return(true);
     }
     catch (Exception e)
     {
         e.ToString();
     }
     return(false);
 }
Exemplo n.º 2
0
 /// <summary>
 /// 获取内容列表
 /// </summary>
 /// <param name="lsContent">内容列表</param>
 /// <returns>成功->true,反之->false</returns>
 public override bool GetContentList(out List <Content> lsContent)
 {
     if (!base.GetContentList(out lsContent))
     {
         return(false);
     }
     try
     {
         //解密
         //_DecryptFile.ExecuteDecrypt(ref _fStream);
         if (!(_fStream.CanRead && _fStream.CanSeek))
         {
             return(false);
         }
         _fStream.Seek(0, SeekOrigin.Begin);
         while (_fStream.Position != _fStream.Length)
         {
             ContentSection conSec = new BinaryContentSection();
             if (conSec.Deserialize(ref _fStream))
             {
                 _fStream.Seek(conSec.GetEndPos(), SeekOrigin.Begin);
                 lsContent.Add(conSec.GetContent());
             }
             else
             {
                 break;
             }
         }
         //加密
         //_EncryptFile.ExecuteEncrypt(ref _fStream);
         return(true);
     }
     catch (Exception e)
     {
         e.ToString();
     }
     return(false);
 }