好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C# FTP操作类分享

本文实例为大家分享了C# FTP操作类的具体代码,可进行FTP的上传,下载等其他功能,支持断点续传,供大家参考,具体内容如下

FTPHelper

?

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Net;

using System.Text;

using System.Threading.Tasks;

 

namespace ManagementProject

{

  public class FTPHelper

  {

  string ftpRemotePath;

 

  #region 变量属性

  /// <summary>

  /// Ftp服务器ip

  /// </summary>

  public static string FtpServerIP = "" ;

  /// <summary>

  /// Ftp 指定用户名

  /// </summary>

  public static string FtpUserID = "" ;

  /// <summary>

  /// Ftp 指定用户密码

  /// </summary>

  public static string FtpPassword = "" ;

 

  public static string ftpURI = "ftp://" + FtpServerIP + "/" ;

 

  #endregion

 

  #region 从FTP服务器下载文件,指定本地路径和本地文件名

  /// <summary>

  /// 从FTP服务器下载文件,指定本地路径和本地文件名

  /// </summary>

  /// <param name="remoteFileName">远程文件名</param>

  /// <param name="localFileName">保存本地的文件名(包含路径)</param>

  /// <param name="ifCredential">是否启用身份验证(false:表示允许用户匿名下载)</param>

  /// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>

  /// <returns>是否下载成功</returns>

  public static bool FtpDownload( string remoteFileName, string localFileName, bool ifCredential, Action< int , int > updateProgress = null )

  {

   FtpWebRequest reqFTP, ftpsize;

   Stream ftpStream = null ;

   FtpWebResponse response = null ;

   FileStream outputStream = null ;

   try

   {

 

   outputStream = new FileStream(localFileName, FileMode.Create);

   if (FtpServerIP == null || FtpServerIP.Trim().Length == 0)

   {

    throw new Exception( "ftp下载目标服务器地址未设置!" );

   }

   Uri uri = new Uri( "ftp://" + FtpServerIP + "/" + remoteFileName);

   ftpsize = (FtpWebRequest)FtpWebRequest.Create(uri);

   ftpsize.UseBinary = true ;

 

   reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri);

   reqFTP.UseBinary = true ;

   reqFTP.KeepAlive = false ;

   if (ifCredential) //使用用户身份认证

   {

    ftpsize.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

    reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

   }

   ftpsize.Method = WebRequestMethods.Ftp.GetFileSize;

   FtpWebResponse re = (FtpWebResponse)ftpsize.GetResponse();

   long totalBytes = re.ContentLength;

   re.Close();

 

   reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;

   response = (FtpWebResponse)reqFTP.GetResponse();

   ftpStream = response.GetResponseStream();

 

   //更新进度

   if (updateProgress != null )

   {

    updateProgress(( int )totalBytes, 0); //更新进度条

   }

   long totalDownloadedByte = 0;

   int bufferSize = 2048;

   int readCount;

   byte [] buffer = new byte [bufferSize];

   readCount = ftpStream.Read(buffer, 0, bufferSize);

   while (readCount > 0)

   {

    totalDownloadedByte = readCount + totalDownloadedByte;

    outputStream.Write(buffer, 0, readCount);

    //更新进度

    if (updateProgress != null )

    {

    updateProgress(( int )totalBytes, ( int )totalDownloadedByte); //更新进度条

    }

    readCount = ftpStream.Read(buffer, 0, bufferSize);

   }

   ftpStream.Close();

   outputStream.Close();

   response.Close();

   return true ;

   }

   catch (Exception ex)

   {

   return false ;

   throw ;

   }

   finally

   {

   if (ftpStream != null )

   {

    ftpStream.Close();

   }

   if (outputStream != null )

   {

    outputStream.Close();

   }

   if (response != null )

   {

    response.Close();

   }

   }

  }

  /// <summary>

  /// 从FTP服务器下载文件,指定本地路径和本地文件名(支持断点下载)

  /// </summary>

  /// <param name="remoteFileName">远程文件名</param>

  /// <param name="localFileName">保存本地的文件名(包含路径)</param>

  /// <param name="ifCredential">是否启用身份验证(false:表示允许用户匿名下载)</param>

  /// <param name="size">已下载文件流大小</param>

  /// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>

  /// <returns>是否下载成功</returns>

  public static bool FtpBrokenDownload( string remoteFileName, string localFileName, bool ifCredential, long size, Action< int , int > updateProgress = null )

  {

   FtpWebRequest reqFTP, ftpsize;

   Stream ftpStream = null ;

   FtpWebResponse response = null ;

   FileStream outputStream = null ;

   try

   {

 

   outputStream = new FileStream(localFileName, FileMode.Append);

   if (FtpServerIP == null || FtpServerIP.Trim().Length == 0)

   {

    throw new Exception( "ftp下载目标服务器地址未设置!" );

   }

   Uri uri = new Uri( "ftp://" + FtpServerIP + "/" + remoteFileName);

   ftpsize = (FtpWebRequest)FtpWebRequest.Create(uri);

   ftpsize.UseBinary = true ;

   ftpsize.ContentOffset = size;

 

   reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri);

   reqFTP.UseBinary = true ;

   reqFTP.KeepAlive = false ;

   reqFTP.ContentOffset = size;

   if (ifCredential) //使用用户身份认证

   {

    ftpsize.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

    reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

   }

   ftpsize.Method = WebRequestMethods.Ftp.GetFileSize;

   FtpWebResponse re = (FtpWebResponse)ftpsize.GetResponse();

   long totalBytes = re.ContentLength;

   re.Close();

 

   reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;

   response = (FtpWebResponse)reqFTP.GetResponse();

   ftpStream = response.GetResponseStream();

 

   //更新进度

   if (updateProgress != null )

   {

    updateProgress(( int )totalBytes, 0); //更新进度条

   }

   long totalDownloadedByte = 0;

   int bufferSize = 2048;

   int readCount;

   byte [] buffer = new byte [bufferSize];

   readCount = ftpStream.Read(buffer, 0, bufferSize);

   while (readCount > 0)

   {

    totalDownloadedByte = readCount + totalDownloadedByte;

    outputStream.Write(buffer, 0, readCount);

    //更新进度

    if (updateProgress != null )

    {

    updateProgress(( int )totalBytes, ( int )totalDownloadedByte); //更新进度条

    }

    readCount = ftpStream.Read(buffer, 0, bufferSize);

   }

   ftpStream.Close();

   outputStream.Close();

   response.Close();

   return true ;

   }

   catch (Exception ex)

   {

   return false ;

   throw ;

   }

   finally

   {

   if (ftpStream != null )

   {

    ftpStream.Close();

   }

   if (outputStream != null )

   {

    outputStream.Close();

   }

   if (response != null )

   {

    response.Close();

   }

   }

  }

 

  /// <summary>

  /// 从FTP服务器下载文件,指定本地路径和本地文件名

  /// </summary>

  /// <param name="remoteFileName">远程文件名</param>

  /// <param name="localFileName">保存本地的文件名(包含路径)</param>

  /// <param name="ifCredential">是否启用身份验证(false:表示允许用户匿名下载)</param>

  /// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>

  /// <param name="brokenOpen">是否断点下载:true 会在localFileName 找是否存在已经下载的文件,并计算文件流大小</param>

  /// <returns>是否下载成功</returns>

  public static bool FtpDownload( string remoteFileName, string localFileName, bool ifCredential, bool brokenOpen, Action< int , int > updateProgress = null )

  {

   if (brokenOpen)

   {

   try

   {

    long size = 0;

    if (File.Exists(localFileName))

    {

    using (FileStream outputStream = new FileStream(localFileName, FileMode.Open))

    {

     size = outputStream.Length;

    }

    }

    return FtpBrokenDownload(remoteFileName, localFileName, ifCredential, size, updateProgress);

   }

   catch

   {

    throw ;

   }

   }

   else

   {

   return FtpDownload(remoteFileName, localFileName, ifCredential, updateProgress);

   }

  }

  #endregion

 

  #region 上传文件到FTP服务器

  /// <summary>

  /// 上传文件到FTP服务器

  /// </summary>

  /// <param name="localFullPath">本地带有完整路径的文件名</param>

  /// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>

  /// <returns>是否下载成功</returns>

  public static bool FtpUploadFile( string localFullPathName, Action< int , int > updateProgress = null )

  {

   FtpWebRequest reqFTP;

   Stream stream = null ;

   FtpWebResponse response = null ;

   FileStream fs = null ;

   try

   {

   FileInfo finfo = new FileInfo(localFullPathName);

   if (FtpServerIP == null || FtpServerIP.Trim().Length == 0)

   {

    throw new Exception( "ftp上传目标服务器地址未设置!" );

   }

   Uri uri = new Uri( "ftp://" + FtpServerIP + "/" + finfo.Name);

   reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri);

   reqFTP.KeepAlive = false ;

   reqFTP.UseBinary = true ;

   reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); //用户,密码

   reqFTP.Method = WebRequestMethods.Ftp.UploadFile; //向服务器发出下载请求命令

   reqFTP.ContentLength = finfo.Length; //为request指定上传文件的大小

   response = reqFTP.GetResponse() as FtpWebResponse;

   reqFTP.ContentLength = finfo.Length;

   int buffLength = 1024;

   byte [] buff = new byte [buffLength];

   int contentLen;

   fs = finfo.OpenRead();

   stream = reqFTP.GetRequestStream();

   contentLen = fs.Read(buff, 0, buffLength);

   int allbye = ( int )finfo.Length;

   //更新进度

   if (updateProgress != null )

   {

    updateProgress(( int )allbye, 0); //更新进度条

   }

   int startbye = 0;

   while (contentLen != 0)

   {

    startbye = contentLen + startbye;

    stream.Write(buff, 0, contentLen);

    //更新进度

    if (updateProgress != null )

    {

    updateProgress(( int )allbye, ( int )startbye); //更新进度条

    }

    contentLen = fs.Read(buff, 0, buffLength);

   }

   stream.Close();

   fs.Close();

   response.Close();

   return true ;

 

   }

   catch (Exception ex)

   {

   return false ;

   throw ;

   }

   finally

   {

   if (fs != null )

   {

    fs.Close();

   }

   if (stream != null )

   {

    stream.Close();

   }

   if (response != null )

   {

    response.Close();

   }

   }

  }

 

  /// <summary>

  /// 上传文件到FTP服务器(断点续传)

  /// </summary>

  /// <param name="localFullPath">本地文件全路径名称:C:\Users\JianKunKing\Desktop\IronPython脚本测试工具</param>

  /// <param name="remoteFilepath">远程文件所在文件夹路径</param>

  /// <param name="updateProgress">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>

  /// <returns></returns>

  public static bool FtpUploadBroken( string localFullPath, string remoteFilepath, Action< int , int > updateProgress = null )

  {

   if (remoteFilepath == null )

   {

   remoteFilepath = "" ;

   }

   string newFileName = string .Empty;

   bool success = true ;

   FileInfo fileInf = new FileInfo(localFullPath);

   long allbye = ( long )fileInf.Length;

   if (fileInf.Name.IndexOf( "#" ) == -1)

   {

   newFileName = RemoveSpaces(fileInf.Name);

   }

   else

   {

   newFileName = fileInf.Name.Replace( "#" , "#" );

   newFileName = RemoveSpaces(newFileName);

   }

   long startfilesize = GetFileSize(newFileName, remoteFilepath);

   if (startfilesize >= allbye)

   {

   return false ;

   }

   long startbye = startfilesize;

   //更新进度

   if (updateProgress != null )

   {

   updateProgress(( int )allbye, ( int )startfilesize); //更新进度条

   }

 

   string uri;

   if (remoteFilepath.Length == 0)

   {

   uri = "ftp://" + FtpServerIP + "/" + newFileName;

   }

   else

   {

   uri = "ftp://" + FtpServerIP + "/" + remoteFilepath + "/" + newFileName;

   }

   FtpWebRequest reqFTP;

   // 根据uri创建FtpWebRequest对象

   reqFTP = (FtpWebRequest)FtpWebRequest.Create( new Uri(uri));

   // ftp用户名和密码

   reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

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

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

   reqFTP.KeepAlive = false ;

   // 指定执行什么命令

   reqFTP.Method = WebRequestMethods.Ftp.AppendFile;

   // 指定数据传输类型

   reqFTP.UseBinary = true ;

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

   reqFTP.ContentLength = fileInf.Length;

   int buffLength = 2048; // 缓冲大小设置为2kb

   byte [] buff = new byte [buffLength];

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

   FileStream fs = fileInf.OpenRead();

   Stream strm = null ;

   try

   {

   // 把上传的文件写入流

   strm = reqFTP.GetRequestStream();

   // 每次读文件流的2kb

   fs.Seek(startfilesize, 0);

   int contentLen = fs.Read(buff, 0, buffLength);

   // 流内容没有结束

   while (contentLen != 0)

   {

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

    strm.Write(buff, 0, contentLen);

    contentLen = fs.Read(buff, 0, buffLength);

    startbye += contentLen;

    //更新进度

    if (updateProgress != null )

    {

    updateProgress(( int )allbye, ( int )startbye); //更新进度条

    }

   }

   // 关闭两个流

   strm.Close();

   fs.Close();

   }

   catch

   {

   success = false ;

   throw ;

   }

   finally

   {

   if (fs != null )

   {

    fs.Close();

   }

   if (strm != null )

   {

    strm.Close();

   }

   }

   return success;

  }

 

  /// <summary>

  /// 去除空格

  /// </summary>

  /// <param name="str"></param>

  /// <returns></returns>

  private static string RemoveSpaces( string str)

  {

   string a = "" ;

   CharEnumerator CEnumerator = str.GetEnumerator();

   while (CEnumerator.MoveNext())

   {

   byte [] array = new byte [1];

   array = System.Text.Encoding.ASCII.GetBytes(CEnumerator.Current.ToString());

   int asciicode = ( short )(array[0]);

   if (asciicode != 32)

   {

    a += CEnumerator.Current.ToString();

   }

   }

   string sdate = System.DateTime.Now.Year.ToString() + System.DateTime.Now.Month.ToString() + System.DateTime.Now.Day.ToString() + System.DateTime.Now.Hour.ToString()

   + System.DateTime.Now.Minute.ToString() + System.DateTime.Now.Second.ToString() + System.DateTime.Now.Millisecond.ToString();

   return a.Split( '.' )[a.Split( '.' ).Length - 2] + "." + a.Split( '.' )[a.Split( '.' ).Length - 1];

  }

  /// <summary>

  /// 获取已上传文件大小

  /// </summary>

  /// <param name="filename">文件名称</param>

  /// <param name="path">服务器文件路径</param>

  /// <returns></returns>

  public static long GetFileSize( string filename, string remoteFilepath)

  {

   long filesize = 0;

   try

   {

   FtpWebRequest reqFTP;

   FileInfo fi = new FileInfo(filename);

   string uri;

   if (remoteFilepath.Length == 0)

   {

    uri = "ftp://" + FtpServerIP + "/" + fi.Name;

   }

   else

   {

    uri = "ftp://" + FtpServerIP + "/" + remoteFilepath + "/" + fi.Name;

   }

   reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri);

   reqFTP.KeepAlive = false ;

   reqFTP.UseBinary = true ;

   reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword); //用户,密码

   reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;

   FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

   filesize = response.ContentLength;

   return filesize;

   }

   catch

   {

   return 0;

   }

  }

 

  //public void Connect(String path, string ftpUserID, string ftpPassword)//连接ftp

  //{

  // // 根据uri创建FtpWebRequest对象

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

  // // 指定数据传输类型

  // reqFTP.UseBinary = true;

  // // ftp用户名和密码

  // reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

  //}

 

  #endregion

 

  #region 获取当前目录下明细

  /// <summary>

  /// 获取当前目录下明细(包含文件和文件夹)

  /// </summary>

  /// <returns></returns>

  public static string [] GetFilesDetailList()

  {

   string [] downloadFiles;

   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(), Encoding.Default);

   string 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)

   {

   downloadFiles = null ;

   throw ex;

   }

  }

 

  /// <summary>

  /// 获取当前目录下文件列表(仅文件)

  /// </summary>

  /// <returns></returns>

  public static string [] GetFileList( string mask)

  {

   string [] downloadFiles;

   StringBuilder result = new StringBuilder();

   FtpWebRequest reqFTP;

   try

   {

   reqFTP = (FtpWebRequest)FtpWebRequest.Create( new Uri(ftpURI));

   reqFTP.UseBinary = true ;

   reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

   reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;

   WebResponse response = reqFTP.GetResponse();

   StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);

 

   string line = reader.ReadLine();

   while (line != null )

   {

    if (mask.Trim() != string .Empty && mask.Trim() != "*.*" )

    {

 

    string mask_ = mask.Substring(0, mask.IndexOf( "*" ));

    if (line.Substring(0, mask_.Length) == mask_)

    {

     result.Append(line);

     result.Append( "\n" );

    }

    }

    else

    {

    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)

   {

   downloadFiles = null ;

   throw ex;

   }

  }

 

  /// <summary>

  /// 获取当前目录下所有的文件夹列表(仅文件夹)

  /// </summary>

  /// <returns></returns>

  public static string [] GetDirectoryList()

  {

   string [] drectory = GetFilesDetailList();

   string m = string .Empty;

   foreach ( string str in drectory)

   {

   int dirPos = str.IndexOf( "<DIR>" );

   if (dirPos > 0)

   {

    /*判断 Windows 风格*/

    m += str.Substring(dirPos + 5).Trim() + "\n" ;

   }

   else if (str.Trim().Substring(0, 1).ToUpper() == "D" )

   {

    /*判断 Unix 风格*/

    string dir = str.Substring(54).Trim();

    if (dir != "." && dir != ".." )

    {

    m += dir + "\n" ;

    }

   }

   }

 

   char [] n = new char [] { '\n' };

   return m.Split(n);

  }

  #endregion

 

  #region 删除文件及文件夹

  /// <summary>

  /// 删除文件

  /// </summary>

  /// <param name="fileName"></param>

  public static bool Delete( string fileName)

  {

   try

   {

   string uri = ftpURI + fileName;

   FtpWebRequest reqFTP;

   reqFTP = (FtpWebRequest)FtpWebRequest.Create( new Uri(uri));

 

   reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

   reqFTP.KeepAlive = false ;

   reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;

 

   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();

   return true ;

   }

   catch (Exception ex)

   {

   return false ;

   throw ex;

   }

  }

 

  /// <summary>

  /// 删除文件夹

  /// </summary>

  /// <param name="folderName"></param>

  public static void RemoveDirectory( string folderName)

  {

   try

   {

   string uri = ftpURI + folderName;

   FtpWebRequest reqFTP;

   reqFTP = (FtpWebRequest)FtpWebRequest.Create( new Uri(uri));

 

   reqFTP.Credentials = new NetworkCredential(FtpUserID, FtpPassword);

   reqFTP.KeepAlive = false ;

   reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;

 

   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 ex;

   }

  }

  #endregion

 

  #region 其他操作

  /// <summary>

  /// 获取指定文件大小

  /// </summary>

  /// <param name="filename"></param>

  /// <returns></returns>

  public static 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)

   {

   throw ex;

   }

   return fileSize;

  }

 

  /// <summary>

  /// 判断当前目录下指定的子目录是否存在

  /// </summary>

  /// <param name="RemoteDirectoryName">指定的目录名</param>

  public bool DirectoryExist( string RemoteDirectoryName)

  {

   try

   {

   string [] dirList = GetDirectoryList();

 

   foreach ( string str in dirList)

   {

    if (str.Trim() == RemoteDirectoryName.Trim())

    {

    return true ;

    }

   }

   return false ;

   }

   catch

   {

   return false ;

   }

 

  }

 

  /// <summary>

  /// 判断当前目录下指定的文件是否存在

  /// </summary>

  /// <param name="RemoteFileName">远程文件名</param>

  public bool FileExist( string RemoteFileName)

  {

   string [] fileList = GetFileList( "*.*" );

   foreach ( string str in fileList)

   {

   if (str.Trim() == RemoteFileName.Trim())

   {

    return true ;

   }

   }

   return false ;

  }

 

  /// <summary>

  /// 创建文件夹

  /// </summary>

  /// <param name="dirName"></param>

  public void MakeDir( string dirName)

  {

   FtpWebRequest reqFTP;

   try

   {

   // dirName = name of the directory to create.

   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)

   {

   throw ex;

   }

  }

 

  /// <summary>

  /// 改名

  /// </summary>

  /// <param name="currentFilename"></param>

  /// <param name="newFilename"></param>

  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)

   {

   throw ex;

   }

  }

 

  /// <summary>

  /// 移动文件

  /// </summary>

  /// <param name="currentFilename"></param>

  /// <param name="newFilename"></param>

  public void MovieFile( string currentFilename, string newDirectory)

  {

   ReName(currentFilename, newDirectory);

  }

 

  /// <summary>

  /// 切换当前目录

  /// </summary>

  /// <param name="DirectoryName"></param>

  /// <param name="IsRoot">true 绝对路径 false 相对路径</param>

  public void GotoDirectory( string DirectoryName, bool IsRoot)

  {

 

   if (IsRoot)

   {

   ftpRemotePath = DirectoryName;

   }

   else

   {

   ftpRemotePath += DirectoryName + "/" ;

   }

   ftpURI = "ftp://" + FtpServerIP + "/" + ftpRemotePath + "/" ;

  }

  #endregion

 

 

  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://HdhCmsTestcnblogs测试数据/Liyuting/p/7084718.html

dy("nrwz");

查看更多关于C# FTP操作类分享的详细内容...

  阅读:41次