日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# FTP 上传、下载、获取文件列表

發布時間:2023/12/10 C# 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# FTP 上传、下载、获取文件列表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
public class FtpHelper{string ftpServerIP;string ftpRemotePath;string ftpUserID;string ftpPassword;string ftpURI;/// <summary>/// 連接FTP/// </summary>/// <param name="FtpServerIP">FTP連接地址</param>/// <param name="FtpRemotePath">指定FTP連接成功后的當前目錄, 如果不指定即默認為根目錄</param>/// <param name="FtpUserID">用戶名</param>/// <param name="FtpPassword">密碼</param>public FtpHelper(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword){ftpServerIP = FtpServerIP;ftpRemotePath = FtpRemotePath;ftpUserID = FtpUserID;ftpPassword = FtpPassword;ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";}/// <summary>/// 上傳/// </summary>/// <param name="filename"></param>public void Upload(string filename){FileInfo fileInf = new FileInfo(filename);string uri = ftpURI + fileInf.Name;FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.KeepAlive = false;reqFTP.Method = WebRequestMethods.Ftp.UploadFile;reqFTP.UseBinary = true;reqFTP.UsePassive = false;reqFTP.ContentLength = fileInf.Length;int buffLength = 2048;byte[] buff = new byte[buffLength];int contentLen;FileStream fs = fileInf.OpenRead();try{Stream strm = reqFTP.GetRequestStream();contentLen = fs.Read(buff, 0, buffLength);while (contentLen != 0){strm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);}strm.Close();fs.Close();}catch (Exception ex){throw new Exception("Ftphelper Upload Error --> " + ex.Message);}}/// <summary>/// 下載/// </summary>/// <param name="filePath"></param>/// <param name="fileName"></param>public void Download(string filePath, string fileName){FtpWebRequest reqFTP;try{FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;reqFTP.UseBinary = true;reqFTP.UsePassive = false;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();long cl = response.ContentLength;int bufferSize = 2048;int readCount;byte[] buffer = new byte[bufferSize];readCount = ftpStream.Read(buffer, 0, bufferSize);while (readCount > 0){outputStream.Write(buffer, 0, readCount);readCount = ftpStream.Read(buffer, 0, bufferSize);}ftpStream.Close();outputStream.Close();response.Close();}catch (Exception ex){throw new Exception("FtpHelper Download Error --> " + ex.Message);}}/// <summary>/// 刪除文件/// </summary>/// <param name="fileName"></param>public void Delete(string fileName){try{string uri = ftpURI + fileName;FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.KeepAlive = false;reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;reqFTP.UsePassive = false;string result = String.Empty;FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();long size = response.ContentLength;Stream datastream = response.GetResponseStream();StreamReader sr = new StreamReader(datastream);result = sr.ReadToEnd();sr.Close();datastream.Close();response.Close();}catch (Exception ex){throw new Exception("FtpHelper Delete Error --> " + ex.Message + " 文件名:" + fileName);}}/// <summary>/// 刪除文件夾/// </summary>/// <param name="folderName"></param>public void RemoveDirectory(string folderName){try{string uri = ftpURI + folderName;FtpWebRequest reqFTP;reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.KeepAlive = false;reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;reqFTP.UsePassive = false;string result = String.Empty;FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();long size = response.ContentLength;Stream datastream = response.GetResponseStream();StreamReader sr = new StreamReader(datastream);result = sr.ReadToEnd();sr.Close();datastream.Close();response.Close();}catch (Exception ex){throw new Exception("FtpHelper Delete Error --> " + ex.Message + " 文件名:" + folderName);}}/// <summary>/// 獲取當前目錄下明細(包含文件和文件夾)/// </summary>/// <returns></returns>public string[] GetFilesDetailList(){string[] downloadFiles;try{StringBuilder result = new StringBuilder();FtpWebRequest ftp;ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;ftp.UsePassive = false;WebResponse response = ftp.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);//while (reader.Read() > 0)//{//}string line = reader.ReadLine();//line = reader.ReadLine();//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){downloadFiles = null;throw new Exception("FtpHelper Error --> " + ex.Message);}}/// <summary>/// 獲取當前目錄下文件列表(僅文件)/// </summary>/// <returns></returns>public string[] GetFileList(string mask){string[] downloadFiles;StringBuilder result = new StringBuilder();FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));reqFTP.UseBinary = true;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;reqFTP.UsePassive = false;WebResponse response = reqFTP.GetResponse();StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);string line = reader.ReadLine();while (line != null){if (mask.Trim() != string.Empty && mask.Trim() != "*.*"){string mask_ = mask.Substring(0, mask.IndexOf("*"));if (line.Substring(0, mask_.Length) == mask_){result.Append(line);result.Append("\n");}}else{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){downloadFiles = null;if (ex.Message.Trim() != "遠程服務器返回錯誤: (550) 文件不可用(例如,未找到文件,無法訪問文件)。"){throw new Exception("FtpHelper GetFileList Error --> " + ex.Message.ToString());}return downloadFiles;}}/// <summary>/// 獲取當前目錄下所有的文件夾列表(僅文件夾)/// </summary>/// <returns></returns>public string[] GetDirectoryList(){string[] drectory = GetFilesDetailList();string m = string.Empty;foreach (string str in drectory){int dirPos = str.IndexOf("<DIR>");if (dirPos > 0){/*判斷 Windows 風格*/m += str.Substring(dirPos + 5).Trim() + "\n";}else if (str.Trim().Substring(0, 1).ToUpper() == "D"){/*判斷 Unix 風格*/string dir = str.Substring(54).Trim();if (dir != "." && dir != ".."){m += dir + "\n";}}}char[] n = new char[] { '\n' };return m.Split(n);}/// <summary>/// 判斷當前目錄下指定的子目錄是否存在/// </summary>/// <param name="RemoteDirectoryName">指定的目錄名</param>public bool DirectoryExist(string RemoteDirectoryName){string[] dirList = GetDirectoryList();foreach (string str in dirList){if (str.Trim() == RemoteDirectoryName.Trim()){return true;}}return false;}/// <summary>/// 判斷當前目錄下指定的文件是否存在/// </summary>/// <param name="RemoteFileName">遠程文件名</param>public bool FileExist(string RemoteFileName){string[] fileList = GetFileList("*.*");foreach (string str in fileList){if (str.Trim() == RemoteFileName.Trim()){return true;}}return false;}/// <summary>/// 創建文件夾/// </summary>/// <param name="dirName"></param>public void MakeDir(string dirName){FtpWebRequest reqFTP;try{// dirName = name of the directory to create.reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;reqFTP.UseBinary = true;reqFTP.UsePassive = false;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();ftpStream.Close();response.Close();}catch (Exception ex){throw new Exception("FtpHelper MakeDir Error --> " + ex.Message);}}/// <summary>/// 獲取指定文件大小/// </summary>/// <param name="filename"></param>/// <returns></returns>public long GetFileSize(string filename){FtpWebRequest reqFTP;long fileSize = 0;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;reqFTP.UseBinary = true;reqFTP.UsePassive = false;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();fileSize = response.ContentLength;ftpStream.Close();response.Close();}catch (Exception ex){throw new Exception("FtpHelper GetFileSize Error --> " + ex.Message);}return fileSize;}/// <summary>/// 改名/// </summary>/// <param name="currentFilename"></param>/// <param name="newFilename"></param>public void ReName(string currentFilename, string newFilename){FtpWebRequest reqFTP;try{reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));reqFTP.Method = WebRequestMethods.Ftp.Rename;reqFTP.RenameTo = newFilename;reqFTP.UseBinary = true;reqFTP.UsePassive = false;reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();Stream ftpStream = response.GetResponseStream();ftpStream.Close();response.Close();}catch (Exception ex){throw new Exception("FtpHelper ReName Error --> " + ex.Message);}}/// <summary>/// 移動文件/// </summary>/// <param name="currentFilename"></param>/// <param name="newFilename"></param>public void MovieFile(string currentFilename, string newDirectory){ReName(currentFilename, newDirectory);}/// <summary>/// 切換當前目錄/// </summary>/// <param name="DirectoryName"></param>/// <param name="IsRoot">true 絕對路徑 false 相對路徑</param>public void GotoDirectory(string DirectoryName, bool IsRoot){if (IsRoot){ftpRemotePath = DirectoryName;}else{ftpRemotePath += DirectoryName + "/";}ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";}/// <summary>/// 刪除訂單目錄/// </summary>/// <param name="ftpServerIP">FTP 主機地址</param>/// <param name="folderToDelete">FTP 用戶名</param>/// <param name="ftpUserID">FTP 用戶名</param>/// <param name="ftpPassword">FTP 密碼</param>public static void DeleteOrderDirectory(string ftpServerIP, string folderToDelete, string ftpUserID, string ftpPassword){try{if (!string.IsNullOrEmpty(ftpServerIP) && !string.IsNullOrEmpty(folderToDelete) && !string.IsNullOrEmpty(ftpUserID) && !string.IsNullOrEmpty(ftpPassword)){FtpHelper fw = new FtpHelper(ftpServerIP, folderToDelete, ftpUserID, ftpPassword);//進入訂單目錄fw.GotoDirectory(folderToDelete, true);//獲取規格目錄string[] folders = fw.GetDirectoryList();foreach (string folder in folders){if (!string.IsNullOrEmpty(folder) || folder != ""){//進入訂單目錄string subFolder = folderToDelete + "/" + folder;fw.GotoDirectory(subFolder, true);//獲取文件列表string[] files = fw.GetFileList("*.*");if (files != null){//刪除文件foreach (string file in files){fw.Delete(file);}}//刪除沖印規格文件夾fw.GotoDirectory(folderToDelete, true);fw.RemoveDirectory(folder);}}//刪除訂單文件夾string parentFolder = folderToDelete.Remove(folderToDelete.LastIndexOf('/'));string orderFolder = folderToDelete.Substring(folderToDelete.LastIndexOf('/') + 1);fw.GotoDirectory(parentFolder, true);fw.RemoveDirectory(orderFolder);}else{throw new Exception("FTP 及路徑不能為空!");}}catch (Exception ex){throw new Exception("刪除訂單時發生錯誤,錯誤信息為:" + ex.Message);}}}

?

轉載于:https://www.cnblogs.com/liang-ling/p/5778710.html

總結

以上是生活随笔為你收集整理的C# FTP 上传、下载、获取文件列表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级色图 | 男人私人影院 | 国产一级片 | 国产综合久久 | 免费在线观看a级片 | 嫩草av在线| 国产富婆一区二区三区 | 亚洲资源网 | 中文字幕777 | 窝窝午夜看片 | 欧洲黄色录像 | 成人合集| 中文字幕亚洲乱码 | 亚洲激情在线观看视频 | 草青青视频 | 国产精品v日韩精品v在线观看 | 国产黑丝在线 | 亚洲一区电影网 | 在线观看中文字幕 | 精品在线99| 岛国成人在线 | 欧美日韩视频免费 | 综合激情婷婷 | 手机av不卡 | 骚虎av在线| 国产农村妇女aaaaa视频 | 在线看a网站 | 在线观看欧美精品 | 蜜臀av免费一区二区三区水牛 | 自拍偷拍在线视频 | 日韩一区二区久久 | 日韩欧美国产一区二区在线观看 | 精品国产乱码久久久久久牛牛 | 天堂素人约啪 | 日韩一二三四五区 | 少妇视频在线播放 | 欧美八区| 午夜精品在线观看 | 黄色大片在线免费观看 | 国产精品国产三级国产a | 久久日本精品字幕区二区 | 女同性做爰三级 | 搡老熟女老女人一区二区 | 中文字幕精品一区 | 自拍偷拍专区 | 中文字幕精品一二三四五六七八 | 一区二区三区av在线 | 日韩精品一区二区三 | 九九视频在线观看 | 天天射天天色天天干 | 狠狠操在线视频 | 午夜免费影院 | 亚洲天堂av免费在线观看 | av一区在线观看 | 天堂中文av| 一级毛片黄色 | 91桃色网站 | 日韩av高清无码 | 亚洲视频在线观看网站 | 丰满肥臀噗嗤啊x99av | 级毛片内射视频 | 色婷婷色综合 | 婷婷一区二区三区四区 | 日韩在线观看你懂的 | 亚洲少妇毛片 | 极品国产91在线网站 | avtt亚洲| 封神榜二在线高清免费观看 | 欧美老熟妇一区二区三区 | 午夜一级黄色片 | 精品无码一区二区三区在线 | 麻豆av一区二区三区 | 日韩电影中文字幕 | av国产精品 | 91pron在线| 欧美一区二区不卡视频 | 青青草原亚洲视频 | 亚洲人午夜精品 | 视频一区二区三区在线观看 | 色呦呦在线观看视频 | 香蕉影院在线观看 | 亚洲人免费 | 俺去草| 精品欧美一区二区三区 | 国产精品1000部啪视频 | 邻居少妇张开腿让我爽了在线观看 | 久久思 | 亚洲欧美日韩国产 | 国产一区二区免费视频 | 欧美疯狂做受xxxxx高潮 | 国产淫视频 | 丰满少妇高潮在线观看 | 高清乱码免费 | 男人的天堂手机在线 | 国产在线视频你懂得 | 精品一区二区久久久久蜜桃 | 亚洲老女人 | 超碰97av在线| 国产三级在线观看完整版 |