当前位置: 首页 > news >正文

企企业业网网站站建建设设/百度指数官方下载

企企业业网网站站建建设设,百度指数官方下载,网站设计贵不贵,昆明做网站建设怎么样c# ftp递归下载文件&#xff0c;找来找去这个最好。(打断点&#xff0c;一小处foreach要改成for) /// <summary>/// ftp文件上传、下载操作类/// </summary>public class FTPHelper{/// <summary>/// ftp用户名&#xff0c;匿名为“”/// </summary>pr…

c# ftp递归下载文件,找来找去这个最好。(打断点,一小处foreach要改成for)

 /// <summary>/// ftp文件上传、下载操作类/// </summary>public class FTPHelper{/// <summary>/// ftp用户名,匿名为“”/// </summary>private string ftpUser;/// <summary>/// ftp用户密码,匿名为“”/// </summary>private string ftpPassWord;/// <summary>///通过用户名,密码连接到FTP服务器/// </summary>/// <param name="ftpUser">ftp用户名,匿名为“”</param>/// <param name="ftpPassWord">ftp登陆密码,匿名为“”</param>public FTPHelper(string ftpUser, string ftpPassWord){this.ftpUser = ftpUser;this.ftpPassWord = ftpPassWord;}/// <summary>/// 匿名访问/// </summary>public FTPHelper(){this.ftpUser = "";this.ftpPassWord = "";}/// <summary>/// 上传文件到Ftp服务器/// </summary>/// <param name="uri">把上传的文件保存为ftp服务器文件的uri,如"ftp://192.168.1.104/capture-212.avi"</param>/// <param name="upLoadFile">要上传的本地的文件路径,如D:\capture-2.avi</param>public void UpLoadFile(string UpLoadUri, string upLoadFile){Stream requestStream = null;FileStream fileStream = null;FtpWebResponse uploadResponse = null;try{Uri uri = new Uri(UpLoadUri);FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uri);uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;uploadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);requestStream = uploadRequest.GetRequestStream();fileStream = File.Open(upLoadFile, FileMode.Open);byte[] buffer = new byte[1024];int bytesRead;while (true){bytesRead = fileStream.Read(buffer, 0, buffer.Length);if (bytesRead == 0)break;requestStream.Write(buffer, 0, bytesRead);}requestStream.Close();uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();}catch (Exception ex){throw new Exception("上传文件到ftp服务器出错,文件名:" + upLoadFile + "异常信息:" + ex.ToString());}finally{if (uploadResponse != null)uploadResponse.Close();if (fileStream != null)fileStream.Close();if (requestStream != null)requestStream.Close();}}/// <summary>/// 从ftp下载文件到本地服务器/// </summary>/// <param name="downloadUrl">要下载的ftp文件路径,如ftp://192.168.1.104/capture-2.avi</param>/// <param name="saveFileUrl">本地保存文件的路径,如(@"d:\capture-22.avi"</param>public void DownLoadFile(string downloadUrl, string saveFileUrl){Stream responseStream = null;FileStream fileStream = null;StreamReader reader = null;try{// string downloadUrl = "ftp://192.168.1.104/capture-2.avi";
FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(downloadUrl);downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile;//string ftpUser = "yoyo";//string ftpPassWord = "123456";downloadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);FtpWebResponse downloadResponse = (FtpWebResponse)downloadRequest.GetResponse();responseStream = downloadResponse.GetResponseStream();fileStream = File.Create(saveFileUrl);byte[] buffer = new byte[1024];int bytesRead;while (true){bytesRead = responseStream.Read(buffer, 0, buffer.Length);if (bytesRead == 0)break;fileStream.Write(buffer, 0, bytesRead);}}catch (Exception ex){throw new Exception("从ftp服务器下载文件出错,文件名:" + downloadUrl + "异常信息:" + ex.ToString());}finally{if (reader != null){reader.Close();}if (responseStream != null){responseStream.Close();}if (fileStream != null){fileStream.Close();}}}/// <summary>/// 从FTP下载文件到本地服务器,支持断点下载/// </summary>/// <param name="ftpUri">ftp文件路径,如"ftp://localhost/test.txt"</param>/// <param name="saveFile">保存文件的路径,如C:\\test.txt</param>public void BreakPointDownLoadFile(string ftpUri, string saveFile){System.IO.FileStream fs = null;System.Net.FtpWebResponse ftpRes = null;System.IO.Stream resStrm = null;try{//下载文件的URIUri u = new Uri(ftpUri);//设定下载文件的保存路径string downFile = saveFile;//FtpWebRequest的作成System.Net.FtpWebRequest ftpReq = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(u);//设定用户名和密码ftpReq.Credentials = new System.Net.NetworkCredential(ftpUser, ftpPassWord);//MethodにWebRequestMethods.Ftp.DownloadFile("RETR")设定ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;//要求终了后关闭连接ftpReq.KeepAlive = false;//使用ASCII方式传送ftpReq.UseBinary = false;//设定PASSIVE方式无效ftpReq.UsePassive = false;//判断是否继续下载//继续写入下载文件的FileStreamif (System.IO.File.Exists(downFile)){//继续下载ftpReq.ContentOffset = (new System.IO.FileInfo(downFile)).Length;fs = new System.IO.FileStream(downFile, System.IO.FileMode.Append, System.IO.FileAccess.Write);}else{//一般下载fs = new System.IO.FileStream(downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write);}//取得FtpWebResponseftpRes = (System.Net.FtpWebResponse)ftpReq.GetResponse();//为了下载文件取得StreamresStrm = ftpRes.GetResponseStream();//写入下载的数据byte[] buffer = new byte[1024];while (true){int readSize = resStrm.Read(buffer, 0, buffer.Length);if (readSize == 0)break;fs.Write(buffer, 0, readSize);}}catch (Exception ex){throw new Exception("从ftp服务器下载文件出错,文件名:" + ftpUri + "异常信息:" + ex.ToString());}finally{fs.Close();resStrm.Close();ftpRes.Close();}}#region 从FTP上下载整个文件夹,包括文件夹下的文件和文件夹/// <summary>/// 列出FTP服务器上面当前目录的所有文件和目录/// </summary>/// <param name="ftpUri">FTP目录</param>/// <returns></returns>public List<FileStruct> ListFilesAndDirectories(string ftpUri){WebResponse webresp = null;StreamReader ftpFileListReader = null;FtpWebRequest ftpRequest = null;try{ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri(ftpUri));ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;ftpRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);webresp = ftpRequest.GetResponse();ftpFileListReader = new StreamReader(webresp.GetResponseStream(), Encoding.Default);}catch (Exception ex){throw new Exception("获取文件列表出错,错误信息如下:" + ex.ToString());}string Datastring = ftpFileListReader.ReadToEnd();return GetList(Datastring);}/// <summary>/// 列出FTP目录下的所有文件/// </summary>/// <param name="ftpUri">FTP目录</param>/// <returns></returns>public List<FileStruct> ListFiles(string ftpUri){List<FileStruct> listAll = ListFilesAndDirectories(ftpUri);List<FileStruct> listFile = new List<FileStruct>();foreach (FileStruct file in listAll){if (!file.IsDirectory){listFile.Add(file);}}return listFile;}/// <summary>/// 列出FTP目录下的所有目录/// </summary>/// <param name="ftpUri">FRTP目录</param>/// <returns>目录列表</returns>public List<FileStruct> ListDirectories(string ftpUri){List<FileStruct> listAll = ListFilesAndDirectories(ftpUri);List<FileStruct> listDirectory = new List<FileStruct>();foreach (FileStruct file in listAll){if (file.IsDirectory){listDirectory.Add(file);}}return listDirectory;}/// <summary>/// 获得文件和目录列表/// </summary>/// <param name="datastring">FTP返回的列表字符信息</param>private List<FileStruct> GetList(string datastring){List<FileStruct> myListArray = new List<FileStruct>();string[] dataRecords = datastring.Split('\n');FileListStyle _directoryListStyle = GuessFileListStyle(dataRecords);foreach (string s in dataRecords){if (_directoryListStyle != FileListStyle.Unknown && s != ""){FileStruct f = new FileStruct();f.Name = "..";switch (_directoryListStyle){case FileListStyle.UnixStyle:f = ParseFileStructFromUnixStyleRecord(s);break;case FileListStyle.WindowsStyle:f = ParseFileStructFromWindowsStyleRecord(s);break;}if (!(f.Name == "." || f.Name == "..")){myListArray.Add(f);}}}return myListArray;}/// <summary>/// 从Unix格式中返回文件信息/// </summary>/// <param name="Record">文件信息</param>private FileStruct ParseFileStructFromUnixStyleRecord(string Record){FileStruct f = new FileStruct();string processstr = Record.Trim();f.Flags = processstr.Substring(0, 10);f.IsDirectory = (f.Flags[0] == 'd');processstr = (processstr.Substring(11)).Trim();_cutSubstringFromStringWithTrim(ref processstr, ' ', 0);   //跳过一部分f.Owner = _cutSubstringFromStringWithTrim(ref processstr, ' ', 0);f.Group = _cutSubstringFromStringWithTrim(ref processstr, ' ', 0);_cutSubstringFromStringWithTrim(ref processstr, ' ', 0);   //跳过一部分string yearOrTime = processstr.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[2];if (yearOrTime.IndexOf(":") >= 0)  //time
            {processstr = processstr.Replace(yearOrTime, DateTime.Now.Year.ToString());}f.CreateTime = DateTime.Parse(_cutSubstringFromStringWithTrim(ref processstr, ' ', 8));f.Name = processstr;   //最后就是名称return f;}/// <summary>/// 从Windows格式中返回文件信息/// </summary>/// <param name="Record">文件信息</param>private FileStruct ParseFileStructFromWindowsStyleRecord(string Record){FileStruct f = new FileStruct();string processstr = Record.Trim();string dateStr = processstr.Substring(0, 8);processstr = (processstr.Substring(8, processstr.Length - 8)).Trim();string timeStr = processstr.Substring(0, 7);processstr = (processstr.Substring(7, processstr.Length - 7)).Trim();DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;myDTFI.ShortTimePattern = "t";f.CreateTime = DateTime.Parse(dateStr + " " + timeStr, myDTFI);if (processstr.Substring(0, 5) == "<DIR>"){f.IsDirectory = true;processstr = (processstr.Substring(5, processstr.Length - 5)).Trim();}else{string[] strs = processstr.Split(new char[] { ' ' },2);// StringSplitOptions.RemoveEmptyEntries);   // true);processstr = strs[1];f.IsDirectory = false;}f.Name = processstr;return f;}/// <summary>/// 按照一定的规则进行字符串截取/// </summary>/// <param name="s">截取的字符串</param>/// <param name="c">查找的字符</param>/// <param name="startIndex">查找的位置</param>private string _cutSubstringFromStringWithTrim(ref string s, char c, int startIndex){int pos1 = s.IndexOf(c, startIndex);string retString = s.Substring(0, pos1);s = (s.Substring(pos1)).Trim();return retString;}/// <summary>/// 判断文件列表的方式Window方式还是Unix方式/// </summary>/// <param name="recordList">文件信息列表</param>private FileListStyle GuessFileListStyle(string[] recordList){foreach (string s in recordList){if (s.Length > 10&& Regex.IsMatch(s.Substring(0, 10), "(-|d)(-|r)(-|w)(-|x)(-|r)(-|w)(-|x)(-|r)(-|w)(-|x)")){return FileListStyle.UnixStyle;}else if (s.Length > 8&& Regex.IsMatch(s.Substring(0, 8), "[0-9][0-9]-[0-9][0-9]-[0-9][0-9]")){return FileListStyle.WindowsStyle;}}return FileListStyle.Unknown;}/// <summary>  /// 从FTP下载整个文件夹  /// </summary>  /// <param name="ftpDir">FTP文件夹路径</param>  /// <param name="saveDir">保存的本地文件夹路径</param>  public void DownFtpDir(string ftpDir, string saveDir){List<FileStruct> files = ListFilesAndDirectories(ftpDir);if (!Directory.Exists(saveDir)){Directory.CreateDirectory(saveDir);}foreach (FileStruct f in files){if (f.IsDirectory) //文件夹,递归查询
                {DownFtpDir(ftpDir + "/" + f.Name, saveDir + "\\" + f.Name);}else //文件,直接下载
                {DownLoadFile(ftpDir + "/" + f.Name, saveDir + "\\" + f.Name);}}}#endregion}#region 文件信息结构public struct FileStruct{public string Flags;public string Owner;public string Group;public bool IsDirectory;public DateTime CreateTime;public string Name;}public enum FileListStyle{UnixStyle,WindowsStyle,Unknown}#endregion

 

转载于:https://www.cnblogs.com/cxeye/p/3552895.html

http://www.jmfq.cn/news/4886605.html

相关文章:

  • 扁平风格企业网站源码/台州seo排名优化
  • 一个超链接 多个网站/指数型基金是什么意思
  • 做网站推广的好处/百度推广账户登陆
  • 做一个中英文网站的价格/宁波免费建站seo排名
  • 佛山企业网站建设公司/百度网页版登录首页
  • 做社交网站有哪些/长春网站优化流程
  • 闵行手机网站建设/提高网站排名软件
  • wordpress插件 破解/嘉兴seo外包
  • php动态网站模板/福建seo搜索引擎优化
  • 什么网站做简历模板/小红书推广引流软件
  • 盐城seo网站优化/网络营销的应用
  • 企业网站的建立必要性/百度在线人工客服
  • 商务网站制作工程师/长沙seo培训班
  • 在html中做网站 视频/百度浏览器app下载
  • 做资讯网站需要什么条件/域名备案
  • 信誉好的邯郸网站建设/搜索引擎推广一般包括哪些
  • 注册了网站怎么建设/浏览器里面信息是真是假
  • 微信网页开发教程/搜索引擎优化人员优化
  • 做网站推广都有哪些行业/seo研究中心怎么样
  • 坪山模板网站建设公司/线上宣传渠道
  • 申请网站服务器/全国推广优化网站
  • 工商网企业信息查询/长沙百度推广排名优化
  • 电子商务网站开发开发背景/seo外包公司专家
  • 西安公司注册网站/短链接购买
  • 什么网站可以做高三英语试题/爱网站关键词查询工具
  • 黑马/新乡百度关键词优化外包
  • 大庆网站开发/seo快速收录快速排名
  • 如何使用好单库选品库做网站/市场调研分析报告模板
  • 怎么做网站的域名解析/长春建站服务
  • 什么网站合适做流量/今天今日头条新闻