知识大全 C# FTP操作类

Posted 文件

篇首语:人不能只做正确的选择,偶尔也得做一些喜欢的选择。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C# FTP操作类相关的知识,希望对你有一定的参考价值。

C# FTP操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近要做个用ftp读取文件 并在浏览器中直接打开图片的小程序 最终写了这个FTP类库 发上来给大家共享共享

   using System;

   using System Collections Generic;

   using System Text;

   using System Net;

   using System IO;

  

   namespace Utility

  

        public class FtpUpDown

       

  

            string ftpServerIP;

  

            string ftpUserID;

  

            string ftpPassword;

  

            FtpWebRequest reqFTP;

  

            private void Connect(String path)//连接ftp

           

  

                // 根据uri创建FtpWebRequest对象

  

                reqFTP = (FtpWebRequest)FtpWebRequest Create(new Uri(path));

  

                // 指定数据传输类型

  

                reqFTP UseBinary = true;

  

                // ftp用户名和密码

  

                reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);

  

           

  

            public FtpUpDown(string ftpServerIP string ftpUserID string ftpPassword)

           

                this ftpServerIP = ftpServerIP;

  

                this ftpUserID = ftpUserID;

  

                this ftpPassword = ftpPassword;

           

  

            //都调用这个

  

            private string[] GetFileList(string path string WRMethods)//上面的代码示例了如何从ftp服务器上获得文件列表

           

                string[] downloadFiles;

                StringBuilder result = new StringBuilder();

                try

               

                    Connect(path);

  

                    reqFTP Method = WRMethods;

  

                    WebResponse response = reqFTP GetResponse();

  

                    StreamReader reader = new StreamReader(response GetResponseStream() System Text Encoding Default);//中文文件名

  

                    string line = reader ReadLine();

  

                    while (line != null)

                   

  

                        result Append(line);

  

                        result Append( \\n );

  

                        line = reader ReadLine();

  

                   

  

                    // to remove the trailing \\n

  

                    result Remove(result ToString() LastIndexOf( \\n ) );

  

                    reader Close();

  

                    response Close();

  

                    return result ToString() Split( \\n );

  

               

  

                catch (Exception ex)

               

                    Log WriteError( Get FileList Error: + ex Message);

                    downloadFiles = null;

  

                    return downloadFiles;

               

           

  

            public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表

           

                return GetFileList( ftp:// + ftpServerIP + / + path WebRequestMethods Ftp ListDirectory);

           

            public string[] GetFileList()//上面的代码示例了如何从ftp服务器上获得文件列表

           

                return GetFileList( ftp:// + ftpServerIP + / WebRequestMethods Ftp ListDirectory);

           

  

            public void Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能

           

                FileInfo fileInf = new FileInfo(filename);

  

                string uri = ftp:// + ftpServerIP + / + fileInf Name;

  

                Connect(uri);//连接

  

                // 默认为true 连接不会被关闭

  

                // 在一个命令之后被执行

  

                reqFTP KeepAlive = false;

  

                // 指定执行什么命令

  

                reqFTP Method = WebRequestMethods Ftp UploadFile;

  

                // 上传文件时通知服务器文件的大小

  

                reqFTP ContentLength = fileInf Length;

                // 缓冲大小设置为kb

                int buffLength = ;

                byte[] buff = new byte[buffLength];

  

                int contentLen;

  

                // 打开一个文件流(System IO FileStream) 去读上传的文件

  

                FileStream fs = fileInf OpenRead();

  

                try

               

  

                    // 把上传的文件写入流

  

                    Stream strm = reqFTP GetRequestStream();

  

                    // 每次读文件流的kb

  

                    contentLen = fs Read(buff buffLength);

  

                    // 流内容没有结束

  

                    while (contentLen != )

                   

                        // 把内容从file stream 写入upload stream

                        strm Write(buff contentLen);

                        contentLen = fs Read(buff buffLength);

  

                   

  

                    // 关闭两个流

  

                    strm Close();

  

                    fs Close();

  

               

  

                catch (Exception ex)

               

                     Log WriteError( Upload Error: + ex Message);

               

  

           

  

            public bool Download(string filePath string fileName out string errorinfo)////上面的代码实现了从ftp服务器下载文件的功能

           

                try

               

                    String onlyFileName = Path GetFileName(fileName);

  

                    string newFileName = filePath + \\\\ + onlyFileName;

  

                    if (File Exists(newFileName))

                   

  

                        errorinfo = string Format( 本地文件 已存在 无法下载 newFileName);

                        return false;

                   

                    string url = ftp:// + ftpServerIP + / + fileName;

                    Connect(url);//连接

                    reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

                    Stream ftpStream = response GetResponseStream();

                    long cl = response ContentLength;

                    int bufferSize = ;

                    int readCount;

                    byte[] buffer = new byte[bufferSize];

                    readCount = ftpStream Read(buffer bufferSize);

  

                    FileStream outputStream = new FileStream(newFileName FileMode Create);

                    while (readCount > )

                   

                        outputStream Write(buffer readCount);

                        readCount = ftpStream Read(buffer bufferSize);

                   

                    ftpStream Close();

                    outputStream Close();

                    response Close();

  

                    errorinfo = ;

  

                    return true;

  

               

  

                catch (Exception ex)

               

                    errorinfo = string Format( 因 无法下载 ex Message);

  

                    return false;

  

               

  

           

  

            //删除文件

  

            public void DeleteFileName(string fileName)

           

                try

               

                    FileInfo fileInf = new FileInfo(fileName);

  

                    string uri = ftp:// + ftpServerIP + / + fileInf Name;

  

                    Connect(uri);//连接

  

                    // 默认为true 连接不会被关闭

  

                    // 在一个命令之后被执行

  

                    reqFTP KeepAlive = false;

  

                    // 指定执行什么命令

  

                    reqFTP Method = WebRequestMethods Ftp DeleteFile;

  

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

                    response Close();

  

               

  

                catch (Exception ex)

               

                    Log WriteError( 删除错误: + ex Message);

               

  

           

  

            //创建目录

  

            public void MakeDir(string dirName)

           

                try

               

                    string uri = ftp:// + ftpServerIP + / + dirName;

  

                    Connect(uri);//连接

  

                    reqFTP Method = WebRequestMethods Ftp MakeDirectory;

  

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

  

                    response Close();

  

               

  

                catch (Exception ex)

               

                    Log WriteError( 创建目录错误: + ex Message);

               

  

           

  

            //删除目录

  

            public void delDir(string dirName)

           

                try

               

                    string uri = ftp:// + ftpServerIP + / + dirName;

  

                    Connect(uri);//连接

  

                    reqFTP Method = WebRequestMethods Ftp RemoveDirectory;

  

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

  

                    response Close();

  

               

  

                catch (Exception ex)

               

                    Log WriteError( 删除目录错误: + ex Message);

               

  

           

  

            //获得文件大小

  

            public long GetFileSize(string filename)

           

  

  

  

                long fileSize = ;

  

                try

               

  

                    FileInfo fileInf = new FileInfo(filename);

  

                    string uri = ftp:// + ftpServerIP + / + fileInf Name;

  

                    Connect(uri);//连接

  

                    reqFTP Method = WebRequestMethods Ftp GetFileSize;

  

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

  

                    fileSize = response ContentLength;

  

                    response Close();

  

               

  

                catch (Exception ex)

               

                    Log WriteError( 获得文件大小错误: + ex Message);

               

  

                return fileSize;

  

           

  

            //文件改名

  

            public void Rename(string currentFilename string newFilename)

           

                try

               

                    FileInfo fileInf = new FileInfo(currentFilename);

                    string uri = ftp:// + ftpServerIP + / + fileInf Name;

                    Connect(uri);//连接

                    reqFTP Method = WebRequestMethods Ftp Rename;

                    reqFTP RenameTo = newFilename;

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

                    response Close();

  

               

  

                catch (Exception ex)

               

                    Log WriteError( 文件改名错误: + ex Message);

               

  

           

            //读取文件

  

            public Stream ReadFile(string fileName)

           

                try

               

                    string url = ftp:// + ftpServerIP + / + fileName;

                    Connect(url);//连接

                    reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);

                    FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();

                    Stream ftpStream = response GetResponseStream();

                    return ftpStream;

               

  

                catch (Exception ex)

               

                    Log WriteError( 读取文件错误: + ex Message);

                    return null;

               

  

           

  

            //获得文件明晰

  

            public string[] GetFilesDetailList()

           

  

                return GetFileList( ftp:// + ftpServerIP + / WebRequestMethods Ftp ListDirectoryDetails);

  

           

  

            //获得文件明晰

  

            public string[] GetFilesDetailList(string path)

           

  

                return GetFileList( ftp:// + ftpServerIP + / + path WebRequestMethods Ftp ListDirectoryDetails);

  

           

  

            // 文件存在检查

            public bool fileCheckExist(string fileName)

           

                bool success = false;

                FtpWebResponse response = null;

                StreamReader reader = null;

                try

               

                    string url = ftp:// + ftpServerIP + / + fileName;

                    Connect(url);//连接

                    reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);

                    response = (FtpWebResponse)reqFTP GetResponse();

                    reader = new StreamReader(response GetResponseStream());

                    string line = reader ReadLine();

                    if (line != null)

                   

                        success = true;

                   

               

                catch (Exception)

               

                    success = false;

               

                finally

               

                    if (reader != null)

                   

                        reader Close();

                   

  

                    if (response != null)

                   

                        response Close();

                   

               

                return success;

           

       

cha138/Article/program/net/201311/11445

相关参考

知识大全 c# Stack操作类

c#Stack操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Stack类代码  usin

知识大全 C#封装Word常用操作类

C#封装Word常用操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSystem

知识大全 C#封装Excel常用操作类

C#封装Excel常用操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingS

知识大全 Java FTP客户端类库比较

JavaFTP客户端类库比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  「导读」本文介绍了在

知识大全 C#创建简单的验证码操作

C#创建简单的验证码操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先创建一个CLASS类

知识大全 asp调用c#编制的com组件实例

 新建类库MyTestDLL  右击项目“MyTestDLL”》属性》生成》勾选“为互操作注册”  打开 AssemblyInfocs&nb

知识大全 C#学习之——认识C#的内部类

C#学习之——认识C#的内部类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#中的内部类能够

知识大全 C#操作消息队列的代码

C#操作消息队列的代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这是一个关于C#操作消息队

知识大全 C# 文件操作 全收录

C#文件操作全收录  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文收集了目前最为常用的C#经

知识大全 C#接口和抽象类技术特点浅析

C#接口和抽象类技术特点浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一C#抽象类  C#