Пример #1
0
 /// <summary>
 /// 保存更新文件集合到文件中
 /// </summary>
 /// <param name="fc">要保存的更新文件集合</param>
 public static void SaveFiles(FileInfoCollection fc)
 {
     XmlDocument xml = fc.Save();
     xml.Save(FileListFile);
 }
Пример #2
0
 /// <summary>
 /// 从文件中读取更新文件列表
 /// </summary>
 /// <returns>读取是否成功</returns>
 public static bool LoadFiles()
 {
     if (File.Exists(FileListFile))
     {
         XmlDocument xml = new XmlDocument();
         try
         {
             xml.Load(FileListFile);
             LocalFiles.Load(xml);
             LocalFiles.Refresh();//刷新文件信息
             SaveFiles();
             TempLocalFiles = LocalFiles.Clone();//复制列表
             return true;
         }
         catch
         {
             LocalFiles.Clear();
         }
     }
     return false;
 }
Пример #3
0
 /// <summary>
 /// 复制一个相同的文件信息集合
 /// </summary>
 /// <returns>复制得到的集合</returns>
 public new FileInfoCollection Clone()
 {
     lock (this)
     {
         FileInfoCollection fc = new FileInfoCollection();
         IEnumerator ie = this.GetEnumerator();
         while (ie.MoveNext())
         {
             FileInfo fi = ((DictionaryEntry)ie.Current).Value as FileInfo;
             fc.Add(fi.ID, fi);
         }
         return fc;
     }
 }
Пример #4
0
 /// <summary>
 /// 获取两个文件信息集合的差集,用于得到更新列表
 /// </summary>
 /// <param name="clientfiles">客户端上传的已存在文件集合</param>
 /// <returns>需要更新的文件集合</returns>
 public FileInfoCollection GetDownloadList(FileInfoCollection clientfiles)
 {
     lock (this)
     {
         FileInfoCollection fc = new FileInfoCollection();
         IEnumerator ie = this.GetEnumerator();
         while (ie.MoveNext())
         {
             FileInfo fi = ((DictionaryEntry)ie.Current).Value as FileInfo;
             int id = (int)((DictionaryEntry)ie.Current).Key;
             if (clientfiles.ContainsKey(id) && clientfiles[id].Equals(fi))
             {
                 //重新取得修改日期及时间
             }
             else
             {
                 fc.Add(fi.ID, fi);
             }
         }
         if (clientfiles.FileResume != null)//如果存在续传文件
         {
             if (this.ContainsKey(clientfiles.FileResume.ID) && this[clientfiles.FileResume.ID].Equals(clientfiles.FileResume))//比对续传文件的信息,如果不相同则重新发送
             {
                 fc.SetFiletoResumeInfo(clientfiles.FileResume.ID, clientfiles.FileResume.Date
                     , clientfiles.FileResume.Length, clientfiles.FileOffSet);
             }
         }
         return fc;
     }
 }
Пример #5
0
 /// <summary>
 /// 创建一个用户信息类
 /// </summary>
 /// <param name="ip">用户的网络地址</param>
 public UserInfo(IPEndPoint ip)
 {
     _IP = ip;
     _ConnectTime = DateTime.Now;
     _FilesToDownLoad = new FileInfoCollection();
 }