博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#FTP操作类,包含上传,下载,删除,获取FTP文件列表文件夹等Hhelp类
阅读量:6454 次
发布时间:2019-06-23

本文共 9701 字,大约阅读时间需要 32 分钟。

C#之ftp- 该实例所需要的引用:

一:引用

using System;  using System.Collections.Generic;  using System.Text;  using System.IO;  using System.Net;using System.Text.RegularExpressions;

二:命名空间及字段

namespace DotNet.Utilities{    public class FTPHelper    {        #region 字段        string ftpURI;        string ftpUserID;        string ftpServerIP;        string ftpPassword;        string ftpRemotePath;        #endregion        ///           /// 连接FTP服务器        ///           /// FTP连接地址          /// 指定FTP连接成功后的当前目录, 如果不指定即默认为根目录          /// 用户名          /// 密码          public FTPHelper(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)        {            ftpServerIP = FtpServerIP;            ftpRemotePath = FtpRemotePath;            ftpUserID = FtpUserID;            ftpPassword = FtpPassword;            ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";        }

 

三:ftp上传文件实例代码,只需要传递相对应的文件名,调用该方法即可

       

///           /// 上传          ///            public void Upload(string filename)        {            FileInfo fileInf = new FileInfo(filename);            FtpWebRequest reqFTP;            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileInf.Name));            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;            reqFTP.KeepAlive = false;            reqFTP.UseBinary = true;            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(ex.Message);            }        }

四:ftp下载之实例代码,只需要传递相对应的文件路径,文件名,调用该方法即可完成

       

///           /// 下载          ///            public void Download(string filePath, string fileName)        {            try            {                FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);                FtpWebRequest reqFTP;                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;                reqFTP.UseBinary = true;                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(ex.Message);            }        }

五:ftp删除文件之实例代码,有上传和下载,必然就会有删除,依旧简单,传入文件名即可完成删除

///           /// 删除文件          ///           public void Delete(string fileName)        {            try            {                FtpWebRequest reqFTP;                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);                reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;                reqFTP.KeepAlive = 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(ex.Message);            }        }

 

六:ftp获取列表之实例代码,获取当前目录下明细(包含文件和文件夹) ,这个可能用的不多,但也是需要了解的

      

///           /// 获取当前目录下明细(包含文件和文件夹)          ///           public string[] GetFilesDetailList()        {            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;                WebResponse response = ftp.GetResponse();                StreamReader reader = new StreamReader(response.GetResponseStream());                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)            {                throw new Exception(ex.Message);            }        }

七:ftp之实例代码,获取FTP文件列表(包括文件夹)

       

///           /// 获取FTP文件列表(包括文件夹)        ///            private string[] GetAllList(string url)        {            List
list = new List
(); FtpWebRequest req = (FtpWebRequest)WebRequest.Create(new Uri(url)); req.Credentials = new NetworkCredential(ftpPassword, ftpPassword); req.Method = WebRequestMethods.Ftp.ListDirectory; req.UseBinary = true; req.UsePassive = true; try { using (FtpWebResponse res = (FtpWebResponse)req.GetResponse()) { using (StreamReader sr = new StreamReader(res.GetResponseStream())) { string s; while ((s = sr.ReadLine()) != null) { list.Add(s); } } } } catch (Exception ex) { throw (ex); } return list.ToArray(); }

八:ftp创建文件夹之实例代码,如何创建文件夹

       

///           /// 创建文件夹          ///            public void MakeDir(string dirName)        {            FtpWebRequest reqFTP;            try            {                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;                reqFTP.UseBinary = true;                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                Stream ftpStream = response.GetResponseStream();                ftpStream.Close();                response.Close();            }            catch (Exception ex)            { }        }

九:ftp之指定文件大小 ,依旧只需要提供文件名即可

      

///           /// 获取指定文件大小          ///           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.Credentials = new NetworkCredential(ftpUserID, ftpPassword);                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                Stream ftpStream = response.GetResponseStream();                fileSize = response.ContentLength;                ftpStream.Close();                response.Close();            }            catch (Exception ex)            { }            return fileSize;        }

十:ftp之更改文件名,传递当前文件名和新文件名即可

       

///           /// 更改文件名          ///          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.Credentials = new NetworkCredential(ftpUserID, ftpPassword);                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();                Stream ftpStream = response.GetResponseStream();                ftpStream.Close();                response.Close();            }            catch (Exception ex)            { }        }

十一:ftp之移动文件,这个用的不是很多,但是有时候也是经常用到的,当前路径,新路径即可,这里要用绝对路径哦

///           /// 移动文件          ///           public void MovieFile(string currentFilename, string newDirectory)        {            ReName(currentFilename, newDirectory);        }    }}

哈哈,总结了这么多,希望给需要的人一些帮助,当然还有一些其他的方法我就不一一列出来了,多行多努力!与大家共勉

 

转载于:https://www.cnblogs.com/rushme/p/6690912.html

你可能感兴趣的文章
poj2155
查看>>
CSS动画之转换模块
查看>>
swift - UITextField 的用法
查看>>
检索和关闭游标+检索游标+关闭游标
查看>>
[开源]KJFramework.Message 智能二进制消息框架 -- 性能提升
查看>>
iOS项目分层
查看>>
CocosCreator 小知识
查看>>
如何称为演讲高手
查看>>
PHP坑之积累
查看>>
POJ3304:Segments——题解
查看>>
48.EXt.Data.JsonReader()
查看>>
UML关系图
查看>>
一个action读取另一个action里的session
查看>>
leetcode 175. Combine Two Tables
查看>>
如何给一个数组对象去重
查看>>
Guava包学习-Cache
查看>>
2019-06-12 Java学习日记之JDBC
查看>>
灯箱效果(点击小图 弹出大图集 然后轮播)
查看>>
linux c 笔记 线程控制(二)
查看>>
samba服务器配置
查看>>