Exemplo n.º 1
0
 /// <summary>
 /// 初始化
 /// </summary>
 public static void InitFtp(string ip, string user, string pwd)
 {
     if (!_IsFtpInit)
     {
         try
         {
             _Url = "ftp://" + ip + "/";
             IP   = ip;
             User = user;
             Pwd  = pwd;
             if (!Directory.Exists("./Tasks"))
             {
                 Directory.CreateDirectory("Tasks");
             }
             if (!Directory.Exists("./Tasks/UploadDirectory"))
             {
                 Directory.CreateDirectory("./Tasks/UploadDirectory");
             }
             if (!Directory.Exists("./Tasks/UploadFile"))
             {
                 Directory.CreateDirectory("./Tasks/UploadFile");
             }
             if (!Directory.Exists("./Tasks/DownloadDirectory"))
             {
                 Directory.CreateDirectory("./Tasks/DownloadDirectory");
             }
             if (!Directory.Exists("./Tasks/DownloadFile"))
             {
                 Directory.CreateDirectory("./Tasks/DownloadFile");
             }
             //读取未完成的上传、下载任务列表
             List <string> paths = FileHelper.GetFiles("./Tasks/UploadDirectory");
             if (paths != null)
             {
                 foreach (string item in paths)
                 {
                     FtpUploadDirectoryInfoList.Add(FileHelper.Deserialize <FileInfoEntity>(item));
                 }
             }
             paths = FileHelper.GetFiles("./Tasks/UploadFile");
             if (paths != null)
             {
                 foreach (string item in paths)
                 {
                     FtpUploadFileInfoList.Add(FileHelper.Deserialize <FileInfoEntity>(item));
                 }
             }
             paths = FileHelper.GetFiles("./Tasks/DownloadDirectory");
             if (paths != null)
             {
                 foreach (string item in paths)
                 {
                     FtpDownloadDirectoryInfoList.Add(FileHelper.Deserialize <FileInfoEntity>(item));
                 }
             }
             paths = FileHelper.GetFiles("./Tasks/DownloadFile");
             if (paths != null)
             {
                 foreach (string item in paths)
                 {
                     FtpDownloadFileInfoList.Add(FileHelper.Deserialize <FileInfoEntity>(item));
                 }
             }
             //删除过期任务
             for (int i = 0; i < FtpUploadFileInfoList.Count(); i++)
             {
                 if (FtpUploadFileInfoList[i].ResultCode == ResultCode.Failed || FtpUploadFileInfoList[i].ResultCode == ResultCode.Cancelled)
                 {
                     FileHelper.DeleteFile("./Tasks/UploadFile/" + FtpUploadFileInfoList[i].FileNo + ".dat");
                     FtpUploadFileInfoList.Remove(FtpUploadFileInfoList[i]);
                 }
             }
             for (int i = 0; i < FtpDownloadFileInfoList.Count(); i++)
             {
                 if (FtpDownloadFileInfoList[i].ResultCode == ResultCode.Failed || FtpDownloadFileInfoList[i].ResultCode == ResultCode.Cancelled)
                 {
                     FileHelper.DeleteFile("./Tasks/DownloadFile/" + FtpDownloadFileInfoList[i].FileNo + ".dat");
                     FtpDownloadFileInfoList.Remove(FtpDownloadFileInfoList[i]);
                 }
             }
             for (int i = 0; i < FtpUploadDirectoryInfoList.Count(); i++)
             {
                 var query = (from x in FtpUploadFileInfoList
                              where x.OperationNo == FtpUploadDirectoryInfoList[i].OperationNo
                              select x).FirstOrDefault();
                 if (query == null)
                 {
                     FileHelper.DeleteFile("./Tasks/UploadDirectory/" + FtpUploadDirectoryInfoList[i].FileNo + ".dat");
                     FtpUploadDirectoryInfoList.Remove(FtpUploadDirectoryInfoList[i]);
                 }
             }
             for (int i = 0; i < FtpDownloadDirectoryInfoList.Count(); i++)
             {
                 var query = (from x in FtpDownloadFileInfoList
                              where x.OperationNo == FtpDownloadDirectoryInfoList[i].OperationNo
                              select x).FirstOrDefault();
                 if (query == null)
                 {
                     FileHelper.DeleteFile("./Tasks/DownloadDirectory/" + FtpDownloadDirectoryInfoList[i].FileNo + ".dat");
                     FtpDownloadDirectoryInfoList.Remove(FtpDownloadDirectoryInfoList[i]);
                 }
             }
         }
         catch
         {
             //nothing
         }
         finally
         {
             _IsFtpInit = true;
         }
     }
 }