• (转)C#对FTP的操作(上传,下载,重命名文件,删除文件,文件存在检查)


    1. 转自:http://blog.csdn.net/hejialin666/article/details/3522815
    2.   1 using System;
        2 using System.Collections.Generic;
        3 using System.Text;
        4 using System.Net;
        5 using System.Data;
        6 using System.IO;
        7 using System.ComponentModel;
        8 namespace Common
        9 {
       10     public class FTPClient
       11     {
       12         private string ftpServerIP = String.Empty;
       13         private string ftpUser = String.Empty;
       14         private string ftpPassword = String.Empty;
       15         private string ftpRootURL = String.Empty;        
       16         public FTPClient(string url, string userid,string password)
       17         {
       18             this.ftpServerIP = ftp的IP地址;
       19             this.ftpUser = 用户名;
       20             this.ftpPassword = 密码;
       21             this.ftpRootURL = "ftp://" + url + "/";
       22         }
       23         /// <summary>
       24         /// 上传
       25         /// </summary>
       26         /// <param name="localFile">本地文件绝对路径</param>
       27         /// <param name="ftpPath">上传到ftp的路径</param>
       28         /// <param name="ftpFileName">上传到ftp的文件名</param>
       29         public bool fileUpload(FileInfo localFile, string ftpPath, string ftpFileName)
       30         {
       31             bool success = false;
       32             FtpWebRequest ftpWebRequest = null;
       33             FileStream localFileStream = null;
       34             Stream requestStream = null;
       35             try
       36             {
       37                 string uri = ftpRootURL + ftpPath + ftpFileName;
       38                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
       39                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
       40                 ftpWebRequest.UseBinary = true;
       41                 ftpWebRequest.KeepAlive = false;
       42                 ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
       43                 ftpWebRequest.ContentLength = localFile.Length;
       44                 int buffLength = 2048;
       45                 byte[] buff = new byte[buffLength];
       46                 int contentLen;
       47                 localFileStream = localFile.OpenRead();
       48                 requestStream = ftpWebRequest.GetRequestStream();
       49                 contentLen = localFileStream.Read(buff, 0, buffLength);
       50                 while (contentLen != 0)
       51                 {
       52                     requestStream.Write(buff, 0, contentLen);
       53                     contentLen = localFileStream.Read(buff, 0, buffLength);
       54                 }
       55                 success = true;
       56             }
       57             catch (Exception)
       58             {
       59                 success = false;
       60             }
       61             finally
       62             { 
       63                 if (requestStream != null)
       64                 {
       65                     requestStream.Close();
       66                 }
       67                 if (localFileStream != null)
       68                 {
       69                     localFileStream.Close();
       70                 }
       71             }
       72             return success;
       73         }
       74         /// <summary>
       75         /// 上传文件
       76         /// </summary>
       77         /// <param name="localPath">本地文件地址(没有文件名)</param>
       78         /// <param name="localFileName">本地文件名</param>
       79         /// <param name="ftpPath">上传到ftp的路径</param>
       80         /// <param name="ftpFileName">上传到ftp的文件名</param>
       81         public bool fileUpload(string localPath, string localFileName, string ftpPath, string ftpFileName)
       82         {
       83             bool success = false;
       84             try
       85             {
       86                 FileInfo localFile = new FileInfo(localPath + localFileName);
       87                 if (localFile.Exists)
       88                 {
       89                     success = fileUpload(localFile, ftpPath, ftpFileName);
       90                 }
       91                 else
       92                 {
       93                     success = false;
       94                 }
       95             }
       96             catch (Exception)
       97             {
       98                 success = false;
       99             }
      100             return success;
      101         }
      102         /// <summary>
      103         /// 下载文件
      104         /// </summary>
      105         /// <param name="localPath">本地文件地址(没有文件名)</param>
      106         /// <param name="localFileName">本地文件名</param>
      107         /// <param name="ftpPath">下载的ftp的路径</param>
      108         /// <param name="ftpFileName">下载的ftp的文件名</param>
      109         public bool fileDownload(string localPath, string localFileName, string ftpPath, string ftpFileName)
      110         {
      111             bool success = false;
      112             FtpWebRequest ftpWebRequest = null;
      113             FtpWebResponse ftpWebResponse = null;
      114             Stream ftpResponseStream = null;
      115             FileStream outputStream = null;
      116             try
      117             {
      118                 outputStream = new FileStream(localPath + localFileName, FileMode.Create);
      119                 string uri = ftpRootURL + ftpPath + ftpFileName;
      120                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
      121                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
      122                 ftpWebRequest.UseBinary = true;
      123                 ftpWebRequest.Method = WebRequestMethods.Ftp.DownloadFile;
      124                 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
      125                 ftpResponseStream = ftpWebResponse.GetResponseStream();
      126                 long contentLength = ftpWebResponse.ContentLength;
      127                 int bufferSize = 2048;
      128                 byte[] buffer = new byte[bufferSize];
      129                 int readCount;
      130                 readCount = ftpResponseStream.Read(buffer, 0, bufferSize);
      131                 while (readCount > 0)
      132                 {
      133                     outputStream.Write(buffer, 0, readCount);
      134                     readCount = ftpResponseStream.Read(buffer, 0, bufferSize);
      135                 }
      136                 success = true;
      137             }
      138             catch (Exception)
      139             {
      140                 success = false;
      141             }
      142             finally
      143             {
      144                 if (outputStream != null)
      145                 {
      146                     outputStream.Close();
      147                 }
      148                 if (ftpResponseStream != null)
      149                 {
      150                     ftpResponseStream.Close();
      151                 }
      152                 if (ftpWebResponse != null)
      153                 {
      154                     ftpWebResponse.Close();
      155                 }
      156             }
      157             return success;
      158         }
      159         /// <summary>
      160         /// 重命名
      161         /// </summary>
      162         /// <param name="ftpPath">ftp文件路径</param>
      163         /// <param name="currentFilename"></param>
      164         /// <param name="newFilename"></param>
      165         public bool fileRename(string ftpPath, string currentFileName, string newFileName)
      166         {
      167             bool success = false;
      168             FtpWebRequest ftpWebRequest = null;
      169             FtpWebResponse ftpWebResponse = null;
      170             Stream ftpResponseStream = null;
      171             try
      172             {
      173                 string uri = ftpRootURL + ftpPath + currentFileName;
      174                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
      175                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
      176                 ftpWebRequest.UseBinary = true;
      177                 ftpWebRequest.Method = WebRequestMethods.Ftp.Rename;
      178                 ftpWebRequest.RenameTo = newFileName;
      179                 
      180                 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
      181                 ftpResponseStream = ftpWebResponse.GetResponseStream();
      182                
      183             }
      184             catch (Exception)
      185             {
      186                 success = false;
      187             }
      188             finally
      189             {
      190                 if (ftpResponseStream != null)
      191                 {
      192                     ftpResponseStream.Close();
      193                 }
      194                 if (ftpWebResponse != null)
      195                 {
      196                     ftpWebResponse.Close();
      197                 }
      198             }
      199             return success;
      200         }
      201         /// <summary>
      202         /// 消除文件
      203         /// </summary>
      204         /// <param name="filePath"></param>
      205         public bool fileDelete(string ftpPath, string ftpName)
      206         {
      207             bool success = false;
      208             FtpWebRequest ftpWebRequest = null;
      209             FtpWebResponse ftpWebResponse = null;
      210             Stream ftpResponseStream = null;
      211             StreamReader streamReader = null;
      212             try
      213             {
      214                 string uri = ftpRootURL + ftpPath + ftpName;
      215                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
      216                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
      217                 ftpWebRequest.KeepAlive = false;
      218                 ftpWebRequest.Method = WebRequestMethods.Ftp.DeleteFile;
      219                 ftpWebResponse = (FtpWebResponse)ftpWebRequest.GetResponse();
      220                 long size = ftpWebResponse.ContentLength;
      221                 ftpResponseStream = ftpWebResponse.GetResponseStream();
      222                 streamReader = new StreamReader(ftpResponseStream);
      223                 string result = String.Empty;
      224                 result = streamReader.ReadToEnd();
      225                
      226                 success = true;
      227             }
      228             catch (Exception)
      229             {
      230                 success = false;
      231             }
      232             finally
      233             {
      234                 if (streamReader != null)
      235                 {
      236                     streamReader.Close();
      237                 }
      238                 if (ftpResponseStream != null)
      239                 {
      240                     ftpResponseStream.Close();
      241                 }
      242                 if (ftpWebResponse != null)
      243                 {
      244                     ftpWebResponse.Close();
      245                 }
      246             }
      247             return success;
      248         }
      249         /// <summary>
      250         /// 文件存在检查
      251         /// </summary>
      252         /// <param name="ftpPath"></param>
      253         /// <param name="ftpName"></param>
      254         /// <returns></returns>
      255         public bool fileCheckExist(string ftpPath, string ftpName)
      256         {
      257             bool success = false;
      258             FtpWebRequest ftpWebRequest = null;
      259             WebResponse webResponse = null;            
      260             StreamReader reader = null;
      261             try
      262             {
      263                 string url = ftpRootURL + ftpPath;                
      264                 
      265                 ftpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
      266                 ftpWebRequest.Credentials = new NetworkCredential(ftpUser, ftpPassword);
      267                 ftpWebRequest.Method = WebRequestMethods.Ftp.ListDirectory;
      268                 ftpWebRequest.KeepAlive = false;
      269                 webResponse = ftpWebRequest.GetResponse();
      270                 reader = new StreamReader(webResponse.GetResponseStream());
      271                 string line = reader.ReadLine();
      272                 while (line != null)
      273                 {
      274                     if (line == ftpName)
      275                     {
      276                         success = true;
      277                         break;
      278                     }
      279                     line = reader.ReadLine();
      280                 }
      281             }
      282             catch (Exception)
      283             {
      284                 success = false;
      285             }
      286             finally
      287             {
      288                 if (reader != null)
      289                 {
      290                     reader.Close();
      291                 }
      292                 if (webResponse != null)
      293                 {
      294                     webResponse.Close();
      295                 }
      296             }
      297             return success;
      298         }
      299     }
      300 }
      View Code
  • 相关阅读:
    python小白-day9 数据库操作与Paramiko模块
    python小白-day8 线程、进程、协程
    python小白-day8 socketserver模块
    python小白-day7 socket初识
    python小白-day7 面向对象高级部分
    python小白-day6 xml处理模块
    python小白-day6 ConfigParser模块
    2020软件定义网络实验二
    软件工程实践第一次个人作业
    2020软件定义网络实验一
  • 原文地址:https://www.cnblogs.com/GS-Crazy/p/3620704.html
Copyright © 2020-2023  润新知