zoukankan      html  css  js  c++  java
  • FtpManager类

    public class FtpManager
        {
            /// <summary>
            /// 主机名
            /// </summary>
            string ftpServerIP;
            /// <summary>
            /// 登录名
            /// </summary>
            string ftpUserID;
            /// <summary>
            /// 登录密码
            /// </summary>
            string ftpPassword;
    
            FtpWebRequest ftpRequest;
    
            public FtpManager(string ftpServerIP, string ftpUserID, string ftpPassword)
            {
                this.ftpServerIP = ftpServerIP;
    
                this.ftpUserID = ftpUserID;
    
                this.ftpPassword = ftpPassword;
            }
    
            #region 连接ftp
            /// <summary>
            /// 连接ftp
            /// </summary>
            /// <param name="path"></param>
            public void Connect(String path)
            {
    
                // 根据uri创建FtpWebRequest对象
                ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "//" + path));
                //设置文件传输类型
                ftpRequest.UseBinary = true;
                //设置登录FTP帐号和密码
                ftpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
    
            }        
            #endregion
    
            #region FTP获取文件列表
    
            /// <summary>
            /// FTP获取文件列表
            /// </summary>
            /// <param name="ftpServerIP"></param>
            /// <param name="ftpUserID"></param>
            /// <param name="ftpPassword"></param>
            /// <returns></returns>
            public string[] FTPGetFileList(string filePath)
            {
                //响应结果
                StringBuilder result = new StringBuilder();
    
                //FTP响应
                WebResponse ftpResponse = null;
    
                //FTP响应流
                StreamReader ftpResponsStream = null;
    
                try
                {
                    Connect(filePath);
    
                    ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
                    //生成FTP响应
                    ftpResponse = ftpRequest.GetResponse();
    
                    //FTP响应流
                    ftpResponsStream = new StreamReader(ftpResponse.GetResponseStream());
    
                    string line = ftpResponsStream.ReadLine();
    
                    while (line != null)
                    {
                        result.Append(line);
                        result.Append("
    ");
                        line = ftpResponsStream.ReadLine();
                    }
    
                    //去掉结果列表中最后一个换行
                    result.Remove(result.ToString().LastIndexOf('
    '), 1);
    
                    //返回结果
                    return result.ToString().Split('
    ');
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return (null);
                }
                finally
                {
                    if (ftpResponsStream != null)
                    {
                        ftpResponsStream.Close();
                    }
    
                    if (ftpResponse != null)
                    {
                        ftpResponse.Close();
                    }
                }
            }
    
            #endregion
    
            #region FTP下载文件
    
            /// <summary>
            /// FTP下载文件
            /// </summary>
            /// <param name="ftpServerIP">FTP服务器IP</param>
            /// <param name="ftpUserID">FTP登录帐号</param>
            /// <param name="ftpPassword">FTP登录密码</param>
            /// <param name="saveFilePath">保存文件路径</param>
            /// <param name="saveFileName">保存文件名</param>
            /// <param name="downloadFileName">下载文件名</param>
            public void FTPDownloadFile(string path, string saveFileName, string downloadFileName)
            {
                //定义FTP响应对象
                FtpWebResponse ftpResponse = null;
                //存储流
                FileStream saveStream = null;
                //FTP数据流
                Stream ftpStream = null;
    
                try
                {
                    Connect(downloadFileName);
                    //生成下载文件
                    saveStream = new FileStream(path + "\" + saveFileName, FileMode.Create);
    
                    //设置下载文件方法
                    ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
    
                    //生成FTP响应对象
                    ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
    
                    //获取FTP响应流对象
                    ftpStream = ftpResponse.GetResponseStream();
    
                    //响应数据长度
                    long cl = ftpResponse.ContentLength;
    
                    int bufferSize = 2048;
    
                    int readCount;
    
                    byte[] buffer = new byte[bufferSize];
    
                    //接收FTP文件流
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
    
                    while (readCount > 0)
                    {
                        saveStream.Write(buffer, 0, readCount);
    
                        readCount = ftpStream.Read(buffer, 0, bufferSize);
                    }
    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (ftpStream != null)
                    {
                        ftpStream.Close();
                    }
    
                    if (saveStream != null)
                    {
                        saveStream.Close();
                    }
    
                    if (ftpResponse != null)
                    {
                        ftpResponse.Close();
                    }
                }
            }
    
            #endregion
    
            #region 从ftp服务器上获得文件列表
            /// <summary>
            /// 从ftp服务器上获得文件列表
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public string[] GetFileList(string path)
            {
                return FTPGetFileList(path);
            }       
            #endregion
    
            #region 文件存在检查
            /// <summary>
            /// 文件存在检查 
            /// </summary>
            /// <param name="fileName"></param>
            /// <returns></returns>
            public bool fileCheckExist(string fileName)
            {
                bool success = false;
                FtpWebResponse response = null;
                StreamReader reader = null;
                try
                {
                    Connect(fileName);
                    response = (FtpWebResponse)ftpRequest.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;
            }        
            #endregion
    
            #region 获取文件大小
            /// <summary>
            /// 获取文件大小
            /// </summary>
            /// <param name="filename"></param>
            /// <returns></returns>
            public long GetFileSize(string filepath)
            {
                long fileSize = 0;
    
                try
                {
                    Connect(filepath);//连接      
    
                    ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize;
    
                    FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
    
                    fileSize = response.ContentLength;
    
                    response.Close();
                }
    
                catch (Exception ex)
                {
                    throw ex;
                }
    
                return fileSize;
    
            }       
            #endregion
        }

    调用方法:

    FtpManager client = new FtpManager("192.168.1.101", "wangjun01", "qwer1234");
    string parentUrl = "B";
    client.FTPDownloadFile("D:", fileList[i], parentUrl);
    //string[] fileList = client.FTPGetFileList(parentUrl);
    //for (int i = 0; i < fileList.Length; i++)
    //{
    // client.FTPDownloadFile("D:", fileList[i], parentUrl);
    //}

  • 相关阅读:
    洛谷 P1074 靶形数独 Label:search 不会
    TYVJ P3522 &&洛谷 P1135 奇怪的电梯 Label:bfs
    洛谷 P1160 队列安排 Label:链表 数据结构
    uestc 1073 秋实大哥与线段树 Label:线段树
    TYVJ P3407 佳佳的魔法照片 Label:语文很重要 语文很重要 语文很重要
    TYVJ P1103 多项式输出 Label:模拟 有点儿坑
    A+B Problem 详细解答 (转载)
    如何批量修改文件名
    c++ 在windows下获取时间和计算时间差的几种方法总结
    SQL Server 2008在Windows 10上不支持
  • 原文地址:https://www.cnblogs.com/f23wangj/p/4989819.html
Copyright © 2011-2022 走看看