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);
    //}

  • 相关阅读:
    Algorithm Gossip (48) 上三角、下三角、对称矩阵
    .Algorithm Gossip (47) 多维矩阵转一维矩阵
    Algorithm Gossip (46) 稀疏矩阵存储
    Algorithm Gossip (45) 费氏搜寻法
    Algorithm Gossip (44) 插补搜寻法
    Algorithm Gossip (43) 二分搜寻法
    Algorithm Gossip (42) 循序搜寻法(使用卫兵)
    Algorithm Gossip (41) 基数排序法
    Algorithm Gossip (40) 合并排序法
    AlgorithmGossip (39) 快速排序法 ( 三 )
  • 原文地址:https://www.cnblogs.com/f23wangj/p/4989819.html
Copyright © 2011-2022 走看看