| /*FTP操作公共类*/   private string FtpIp, FtpPort, FtpUser, FtpPwd, FtpUrl;   private FTPUtil() {   }   public FTPUtil(string ftpIp, string ftpPort, string ftpUser, string ftpPwd) {     FtpIp = ftpIp;     FtpPort = ftpPort;     FtpUser = ftpUser;     FtpPwd = ftpPwd;       FtpUrl = "ftp://" + ftpIp + ":" + ftpPort + "/"; }   private FtpWebRequest GetFtpWebRequest(string path, string method) {     FtpWebRequest Ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(FtpUrl + "/" + path));     Ftp.Credentials = new NetworkCredential(FtpUser, FtpPwd);     Ftp.KeepAlive = false;     Ftp.UsePassive = true;     Ftp.Method = method;     return Ftp; }   /// <summary> /// 获取路径下所有文件夹 /// </summary> /// <param name="dirName"></param> /// <returns></returns> public List<FileModel> GetDirs(string dirName) {     return GetAllFiles(dirName).FindAll(s => s.Type == "文件夹"); }   /// <summary> /// 获取路径下所有文件 /// </summary> /// <param name="dirName"></param> /// <returns></returns> public List<FileModel> GetFiles(string dirName) {     return GetAllFiles(dirName).FindAll(s => s.Type == "文件"); }   /// <summary> /// 获取路径下所有项目 /// </summary> /// <param name="dirName"></param> /// <returns></returns> public List<FileModel> GetAllFiles(string dirName) {     List<FileModel> fileList = new List<FileModel>();     try     {         FtpWebRequest Ftp = GetFtpWebRequest(dirName, WebRequestMethods.Ftp.ListDirectoryDetails);           using (WebResponse response = Ftp.GetResponse())         {             using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))             {                 string line = "";                 while ((line = reader.ReadLine()) != null)                 {                     fileList.Add(ConvertFile(line, dirName));                 }             }         }     }     catch (Exception ex)     {         throw ex;     }     return fileList; }   /// <summary> /// FTP文件信息转换 /// </summary> /// <param name="value"></param> /// <param name="dirName"></param> /// <returns></returns> private FileModel ConvertFile(string value, string dirName) {     string[] arr = value.Split(new string[] { " " },4, StringSplitOptions.RemoveEmptyEntries);      FileModel model = new FileModel();     model.Date = arr[0];     model.Time = arr[1];     if (arr[2] == "<DIR>")     {         model.Type = "文件夹";         model.Size = 0;     }     else     {         model.Type = "文件";         model.Size = Convert.ToInt64(arr[2]);     }     model.Name = arr[3];     model.FullName = dirName + "/" + model.Name;     return model; }   /// <summary> /// 上传 /// </summary> /// <param name="fileName"></param> /// <param name="desFile"></param> public void Upload(string fileName, string desFile) {     try     {         FileInfo fileInfo = new FileInfo(fileName);           FtpWebRequest Ftp = GetFtpWebRequest(desFile, WebRequestMethods.Ftp.UploadFile);         Ftp.UseBinary = true;         Ftp.ContentLength = fileInfo.Length;             int buffLength = 2048;         byte[] buff = new byte[buffLength];         int len = 0;         using (FileStream fs = fileInfo.OpenRead())         {             using (Stream stream = Ftp.GetRequestStream())             {                 while ((len = fs.Read(buff, 0, buffLength)) != 0)                 {                     stream.Write(buff, 0, buffLength);                 }             }         }     }     catch (Exception ex)     {         throw ex;     }     }   /// <summary> /// 下载 /// </summary> /// <param name="fileName"></param> /// <param name="desFile"></param> public void DownLoad(string fileName, string desFile) {     try     {         FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.DownloadFile);         Ftp.UseBinary = true;           FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();         int buffLength = 2048;         byte[] buff = new byte[buffLength];         int len = 0;         using (FileStream fs = new FileStream(desFile, FileMode.Create))         {             using (Stream stream = response.GetResponseStream())             {                 while ((len = stream.Read(buff, 0, buffLength)) != 0)                 {                     fs.Write(buff, 0, buffLength);                 }             }         }     }     catch (Exception ex)     {         throw ex;     } }   /// <summary> /// 删除文件 /// </summary> /// <param name="fileName"></param> public void DeleteFile(string fileName) {     try     {         FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.DeleteFile);           FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();           using (Stream datastream = response.GetResponseStream())         {             using (StreamReader sr = new StreamReader(datastream))             {                 sr.ReadToEnd();             }         }     }     catch (Exception ex)     {         throw ex;     } }     /// <summary> /// 重命名 /// </summary> /// <param name="fileName"></param> /// <param name="newName"></param> public void ReName(string fileName, string newName) {     try     {         FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.Rename);         Ftp.RenameTo = newName;         Ftp.UseBinary = true;           FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();           using (Stream datastream = response.GetResponseStream())         {             using (StreamReader sr = new StreamReader(datastream))             {                 sr.ReadToEnd();             }         }     }     catch (Exception ex)     {         throw ex;     } } |