国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C# FtpHelper實現(xiàn)ftp服務(wù)器文件讀寫操作

2019-11-06 06:12:06
字體:
供稿:網(wǎng)友

開源中國博客地址

最近做了一個項目,需要讀取ftp服務(wù)器上的文件,于是參考了網(wǎng)上提供的一些幫組方法,使用過程中,出現(xiàn)一些小細節(jié)問題,于是本人做了一些修改,拿來分享一下

 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using System.Threading;using System.Configuration;  namespace FtpSyn {     public  class FtpHelper     {         //基本設(shè)置 ftp://400:ZOina2017@192.168.10.17/400backup         static PRivate string path = @"ftp://" + ConfigurationManager.AppSettings["FtpServerip"].ToString() + "/";    //目標路徑         static private string ftpip = ConfigurationManager.AppSettings["FtpServerIP"].ToString();    //ftp IP地址         static private string username = ConfigurationManager.AppSettings["FtpUserName"].ToString();   //ftp用戶名         static private string passWord = ConfigurationManager.AppSettings["FtpPassWord"].ToString();   //ftp密碼                //獲取ftp上面的文件和文件夾         public static string[] GetFileList(string dir)         {             string[] downloadFiles;             StringBuilder result = new StringBuilder();             FtpWebRequest request;             try             {                 request = (FtpWebRequest)FtpWebRequest.Create(new Uri(path + dir));                 request.UseBinary = true;                 request.Credentials = new NetworkCredential(username, password);//設(shè)置用戶名和密碼                 request.Method = WebRequestMethods.Ftp.ListDirectory;                 request.UseBinary = true;                 request.UsePassive = false;  //選擇主動還是被動模式 ,  這句要加上的。                 request.KeepAlive = false;//一定要設(shè)置此屬性,否則一次性下載多個文件的時候,會出現(xiàn)異常。                 WebResponse response = request.GetResponse();                 StreamReader reader = new StreamReader(response.GetResponseStream());                  string line = reader.ReadLine();                 while (line != null)                 {                     result.Append(line);                     result.Append("/n");                     line = reader.ReadLine();                 }                 result.Remove(result.ToString().LastIndexOf('/n'), 1);                 reader.Close();                 response.Close();                 return result.ToString().Split('/n');             }             catch (Exception ex)             {                 LogHelper.writeErrorLog("獲取ftp上面的文件和文件夾:" + ex.Message);                 downloadFiles = null;                 return downloadFiles;             }         }         /// <summary>         /// 從ftp服務(wù)器上獲取文件并將內(nèi)容全部轉(zhuǎn)換成string返回         /// </summary>         /// <param name="fileName"></param>         /// <param name="dir"></param>         /// <returns></returns>          public static string GetFileStr(string fileName, string dir)         {             FtpWebRequest reqFTP;             try             {                 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(path + dir + "/" + fileName));                 reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;                 reqFTP.UseBinary = true;                 reqFTP.Credentials = new NetworkCredential(username, password);                 reqFTP.UsePassive = false;  //選擇主動還是被動模式 ,  這句要加上的。                 reqFTP.KeepAlive = false;//一定要設(shè)置此屬性,否則一次性下載多個文件的時候,會出現(xiàn)異常。                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                 Stream ftpStream = response.GetResponseStream();                 StreamReader reader = new StreamReader(ftpStream);                 string fileStr = reader.ReadToEnd();                 reader.Close();                 ftpStream.Close();                 response.Close();                 return fileStr;             }             catch (Exception ex)             {                 LogHelper.writeErrorLog("獲取ftp文件并讀取內(nèi)容失敗:" + ex.Message);                 return null;             }         }           /// <summary>         /// 獲取文件大小         /// </summary>         /// <param name="file">ip服務(wù)器下的相對路徑</param>         /// <returns>文件大小</returns>         public static int GetFileSize(string file)         {             StringBuilder result = new StringBuilder();             FtpWebRequest request;             try             {                 request = (FtpWebRequest)FtpWebRequest.Create(new Uri(path + file));                 request.UseBinary = true;                 request.Credentials = new NetworkCredential(username, password);//設(shè)置用戶名和密碼                 request.Method = WebRequestMethods.Ftp.GetFileSize;                  int dataLength = (int)request.GetResponse().ContentLength;                  return dataLength;             }             catch (Exception ex)             {                 Console.WriteLine("獲取文件大小出錯:" + ex.Message);                 return -1;             }         }          /// <summary>         /// 文件上傳         /// </summary>         /// <param name="filePath">原路徑(絕對路徑)包括文件名</param>         /// <param name="objPath">目標文件夾:服務(wù)器下的相對路徑 不填為根目錄</param>         public static void FileUpLoad(string filePath,string objPath="")         {             try             {                 string url = path;                 if(objPath!="")                     url += objPath + "/";                 try                 {                      FtpWebRequest reqFTP = null;                     //待上傳的文件 (全路徑)                     try                     {                         FileInfo fileInfo = new FileInfo(filePath);                         using (FileStream fs = fileInfo.OpenRead())                         {                             long length = fs.Length;                             reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url + fileInfo.Name));                              //設(shè)置連接到FTP的帳號密碼                             reqFTP.Credentials = new NetworkCredential(username, password);                             //設(shè)置請求完成后是否保持連接                             reqFTP.KeepAlive = false;                             //指定執(zhí)行命令                             reqFTP.Method = WebRequestMethods.Ftp.UploadFile;                             //指定數(shù)據(jù)傳輸類型                             reqFTP.UseBinary = true;                              using (Stream stream = reqFTP.GetRequestStream())                             {                                 //設(shè)置緩沖大小                                 int BufferLength = 5120;                                 byte[] b = new byte[BufferLength];                                 int i;                                 while ((i = fs.Read(b, 0, BufferLength)) > 0)                                 {                                     stream.Write(b, 0, i);                                 }                                 Console.WriteLine("上傳文件成功");                             }                         }                     }                     catch (Exception ex)                     {                         Console.WriteLine("上傳文件失敗錯誤為" + ex.Message);                     }                     finally                     {                      }                 }                 catch (Exception ex)                 {                     Console.WriteLine("上傳文件失敗錯誤為" + ex.Message);                 }                 finally                 {                  }             }             catch (Exception ex)             {                 Console.WriteLine("上傳文件失敗錯誤為" + ex.Message);             }         }                  /// <summary>         /// 刪除文件         /// </summary>         /// <param name="fileName">服務(wù)器下的相對路徑 包括文件名</param>         public static void DeleteFileName(string fileName)         {             try             {                 FileInfo fileInf = new FileInfo(ftpip +""+ fileName);                 string uri = path + fileName;                 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));                 // 指定數(shù)據(jù)傳輸類型                 reqFTP.UseBinary = true;                 // ftp用戶名和密碼                 reqFTP.Credentials = new NetworkCredential(username, password);                 // 默認為true,連接不會被關(guān)閉                 // 在一個命令之后被執(zhí)行                 reqFTP.KeepAlive = false;                 // 指定執(zhí)行什么命令                 reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                 response.Close();             }             catch (Exception ex)             {                 Console.WriteLine("刪除文件出錯:" + ex.Message);             }         }                  /// <summary>         /// 新建目錄 上一級必須先存在         /// </summary>         /// <param name="dirName">服務(wù)器下的相對路徑</param>         public static void MakeDir(string dirName)         {             try             {                 string uri = path + dirName;                 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));                 // 指定數(shù)據(jù)傳輸類型                 reqFTP.UseBinary = true;                 // ftp用戶名和密碼                 reqFTP.Credentials = new NetworkCredential(username, password);                 reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                 response.Close();             }             catch (Exception ex)             {                 Console.WriteLine("創(chuàng)建目錄出錯:" + ex.Message);             }         }                  /// <summary>         /// 刪除目錄 上一級必須先存在         /// </summary>         /// <param name="dirName">服務(wù)器下的相對路徑</param>         public static void DelDir(string dirName)         {             try             {                 string uri = path + dirName;                 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));                 // ftp用戶名和密碼                 reqFTP.Credentials = new NetworkCredential(username, password);                 reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                 response.Close();             }             catch (Exception ex)             {                 Console.WriteLine("刪除目錄出錯:" + ex.Message);             }         }          /// <summary>         /// 從ftp服務(wù)器上獲得文件夾列表         /// </summary>         /// <param name="RequedstPath">服務(wù)器下的相對路徑</param>         /// <returns></returns>         public static List<string> GetDirctory(string RequedstPath)         {             List<string> strs = new List<string>();             try             {                 string uri = path + RequedstPath;   //目標路徑 path為服務(wù)器地址                 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));                 // ftp用戶名和密碼                 reqFTP.Credentials = new NetworkCredential(username, password);                 reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;                 WebResponse response = reqFTP.GetResponse();                 StreamReader reader = new StreamReader(response.GetResponseStream());//中文文件名                  string line = reader.ReadLine();                 while (line != null)                 {                     if (line.Contains("<DIR>"))                     {                         string msg = line.Substring(line.LastIndexOf("<DIR>")+5).Trim();                         strs.Add(msg);                     }                     line = reader.ReadLine();                 }                 reader.Close();                 response.Close();                 return strs;             }             catch (Exception ex)             {                 Console.WriteLine("獲取目錄出錯:" + ex.Message);             }             return strs;         }          /// <summary>         /// 從ftp服務(wù)器上獲得文件列表         /// </summary>         /// <param name="RequedstPath">服務(wù)器下的相對路徑</param>         /// <returns></returns>         public static List<string> GetFile(string RequedstPath)         {             List<string> strs = new List<string>();             try             {                 string uri = path + RequedstPath;   //目標路徑 path為服務(wù)器地址                 FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));                 // ftp用戶名和密碼                 reqFTP.Credentials = new NetworkCredential(username, password);                 reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;                 WebResponse response = reqFTP.GetResponse();                 StreamReader reader = new StreamReader(response.GetResponseStream());//中文文件名                  string line = reader.ReadLine();                 while (line != null)                 {                     if (!line.Contains("<DIR>"))                     {                         string msg = line.Substring(39).Trim();                         strs.Add(msg);                     }                     line = reader.ReadLine();                 }                 reader.Close();                 response.Close();                 return strs;             }             catch (Exception ex)             {                 Console.WriteLine("獲取文件出錯:" + ex.Message);             }             return strs;         }          } }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高邑县| 沽源县| 兴海县| 永川市| 酉阳| 洛浦县| 周口市| 洪湖市| 汝南县| 长沙市| 淄博市| 肥西县| 阳原县| 田阳县| 阿拉善右旗| 淮阳县| 南靖县| 三江| 桃源县| 汉阴县| 缙云县| 永昌县| 比如县| 汽车| 高淳县| 大余县| 叙永县| 和平县| 东阿县| 金平| 安龙县| 恩平市| 清丰县| 赤峰市| 隆德县| 巴中市| 景谷| 香格里拉县| 兴化市| 海口市| 平南县|