C# FTP操作类

C#语言: Codee#2416

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;
using  System.Net;
using  System.Windows.Forms;
using  System.Globalization;
 
namespace  FtpLib
{
 
     public  class  FtpWeb
     {
         string  ftpServerIP;
         string  ftpRemotePath;
         string  ftpUserID;
         string  ftpPassword;
         string  ftpURI;
 
         /// <summary>
         /// 连接FTP
         /// </summary>
         /// <param name="FtpServerIP">FTP连接地址</param>
         /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
         /// <param name="FtpUserID">用户名</param>
         /// <param name="FtpPassword">密码</param>
         public  FtpWeb( string  FtpServerIP, string  FtpRemotePath, string  FtpUserID, string  FtpPassword)
         {
             ftpServerIP = FtpServerIP;
             ftpRemotePath = FtpRemotePath;
             ftpUserID = FtpUserID;
             ftpPassword = FtpPassword;
             ftpURI = "ftp://"  + ftpServerIP + "/"  + ftpRemotePath + "/" ;
         }
 
         /// <summary>
         /// 上传
         /// </summary>
         /// <param name="filename"></param>
         public  void  Upload( string  filename)
         {
             FileInfo fileInf = new  FileInfo(filename);
             string  uri = ftpURI + fileInf.Name;
             FtpWebRequest reqFTP;
 
             reqFTP = (FtpWebRequest)FtpWebRequest.Create( new  Uri(uri));
             reqFTP.Credentials = new  NetworkCredential(ftpUserID, ftpPassword);
             reqFTP.KeepAlive = false ;
             reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
             reqFTP.UseBinary = true ;
             reqFTP.ContentLength = fileInf.Length;
             int  buffLength = 2048;
             byte [] buff = new  byte [buffLength];
             int  contentLen;
             FileStream fs = fileInf.OpenRead();
             try
             {
                 Stream strm = reqFTP.GetRequestStream();
                 contentLen = fs.Read(buff, 0, buffLength);
                 while  (contentLen != 0)
                 {
                     strm.Write(buff, 0, contentLen);
                     contentLen = fs.Read(buff, 0, buffLength);
                 }
                 strm.Close();
                 fs.Close();
             }
             catch  (Exception ex)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Upload Error --> "  + ex.Message);
             }
         }
 
         /// <summary>
         /// 下载
         /// </summary>
         /// <param name="filePath"></param>
         /// <param name="fileName"></param>
         public  void  Download( string  filePath, string  fileName)
         {
             FtpWebRequest reqFTP;
             try
             {
                 FileStream outputStream = new  FileStream(filePath + "\\"  + fileName, FileMode.Create);
 
                 reqFTP = (FtpWebRequest)FtpWebRequest.Create( new  Uri(ftpURI + fileName));
                 reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                 reqFTP.UseBinary = true ;
                 reqFTP.Credentials = new  NetworkCredential(ftpUserID, ftpPassword);
                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                 Stream ftpStream = response.GetResponseStream();
                 long  cl = response.ContentLength;
                 int  bufferSize = 2048;
                 int  readCount;
                 byte [] buffer = new  byte [bufferSize];
 
                 readCount = ftpStream.Read(buffer, 0, bufferSize);
                 while  (readCount > 0)
                 {
                     outputStream.Write(buffer, 0, readCount);
                     readCount = ftpStream.Read(buffer, 0, bufferSize);
                 }
 
                 ftpStream.Close();
                 outputStream.Close();
                 response.Close();
             }
             catch  (Exception ex)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Download Error --> "  + ex.Message);
             }
         }
 
 
         /// <summary>
         /// 删除文件
         /// </summary>
         /// <param name="fileName"></param>
         public  void  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();
             }
             catch  (Exception ex)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Delete Error --> "  + ex.Message + "  文件名:"  + fileName);
             }
         }
 
         /// <summary>
         /// 删除文件夹
         /// </summary>
         /// <param name="folderName"></param>
         public  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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Delete Error --> "  + ex.Message + "  文件名:"  + folderName);
             }
         }
 
         /// <summary>
         /// 获取当前目录下明细(包含文件和文件夹)
         /// </summary>
         /// <returns></returns>
         public  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);
 
                 //while (reader.Read() > 0)
                 //{
 
                 //}
                 string  line = reader.ReadLine();
                 //line = reader.ReadLine();
                 //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 ;
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "GetFilesDetailList Error --> "  + ex.Message);
                 return  downloadFiles;
             }
         }
        /// <summary>
         /// 获取当前目录下文件列表(仅文件)
         /// </summary>
         /// <returns></returns>
 
     public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表

    {
      string[] downloadFiles;
      FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
      ftp.UseBinary = true;

      ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//如果是匿名登录,则注释掉。
      StringBuilder result = new StringBuilder();
      try
       {

        ftp.Method = WebRequestMethods.Ftp.ListDirectory;
        WebResponse response = ftp.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'), 1);
        reader.Close();
        response.Close();
        downloadFiles = result.ToString().Split('\n');
        }
      catch (Exception ex)
      {
        throw ex;
      }
      return downloadFiles;
    }

/// <summary>
         /// 获取当前目录下所有的文件夹列表(仅文件夹)
         /// </summary>
         /// <returns></returns>
         public  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);
         }
 
         /// <summary>
         /// 判断当前目录下指定的子目录是否存在
         /// </summary>
         /// <param name="RemoteDirectoryName">指定的目录名</param>
         public  bool  DirectoryExist( string  RemoteDirectoryName)
         {
             string [] dirList = GetDirectoryList();
             foreach  ( string  str in  dirList)
             {
                 if  (str.Trim() == RemoteDirectoryName.Trim())
                 {
                     return  true ;
                 }
             }
             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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "MakeDir Error --> "  + ex.Message);
             }
         }
 
         /// <summary>
         /// 获取指定文件大小
         /// </summary>
         /// <param name="filename"></param>
         /// <returns></returns>
         public  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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "GetFileSize Error --> "  + ex.Message);
             }
             return  fileSize;
         }
 
         /// <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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "ReName Error --> "  + ex.Message);
             }
         }
 
         /// <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 + "/" ;
         }
 
         /// <summary>
         /// 删除订单目录
         /// </summary>
         /// <param name="ftpServerIP">FTP 主机地址</param>
         /// <param name="folderToDelete">FTP 用户名</param>
         /// <param name="ftpUserID">FTP 用户名</param>
         /// <param name="ftpPassword">FTP 密码</param>
         public  static  void  DeleteOrderDirectory( string  ftpServerIP, string  folderToDelete, string  ftpUserID, string  ftpPassword)
         {
             try {
                 if  (! string .IsNullOrEmpty(ftpServerIP) && ! string .IsNullOrEmpty(folderToDelete) && ! string .IsNullOrEmpty(ftpUserID) && ! string .IsNullOrEmpty(ftpPassword))
                 {
                     FtpWeb fw = new  FtpWeb(ftpServerIP, folderToDelete, ftpUserID, ftpPassword);
                     //进入订单目录
                     fw.GotoDirectory(folderToDelete, true );
                     //获取规格目录
                     string [] folders = fw.GetDirectoryList();
                     foreach  ( string  folder in  folders)
                     {
                         if  (! string .IsNullOrEmpty(folder) || folder != "" )
                         {
                             //进入订单目录
                             string  subFolder = folderToDelete + "/"  + folder;
                             fw.GotoDirectory(subFolder, true );
                             //获取文件列表
                             string [] files = fw.GetFileList( "*.*" );
                             if  (files != null )
                             {
                                 //删除文件
                                 foreach  ( string  file in  files)
                                 {
                                     fw.Delete(file);
                                 }
                             }
                             //删除冲印规格文件夹
                             fw.GotoDirectory(folderToDelete, true );
                             fw.RemoveDirectory(folder);
                         }
                     }
 
                     //删除订单文件夹
                     string  parentFolder = folderToDelete.Remove(folderToDelete.LastIndexOf( '/' ));
                     string  orderFolder = folderToDelete.Substring(folderToDelete.LastIndexOf( '/' ) + 1);
                     fw.GotoDirectory(parentFolder, true );
                     fw.RemoveDirectory(orderFolder);
                 }
                 else
                 {
                     throw  new  Exception( "FTP 及路径不能为空!" );
                 }
             }
             catch (Exception ex)
             {
                 throw  new  Exception( "删除订单时发生错误,错误信息为:"  + ex.Message);
             }
         }
     }
 
 
     public  class  Insert_Standard_ErrorLog
     {
         public  static  void  Insert( string  x, string  y)
         {
 
         }
     }
 
 
}

---恢复内容结束---

C#语言: Codee#2416

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.IO;
using  System.Net;
using  System.Windows.Forms;
using  System.Globalization;
 
namespace  FtpLib
{
 
     public  class  FtpWeb
     {
         string  ftpServerIP;
         string  ftpRemotePath;
         string  ftpUserID;
         string  ftpPassword;
         string  ftpURI;
 
         /// <summary>
         /// 连接FTP
         /// </summary>
         /// <param name="FtpServerIP">FTP连接地址</param>
         /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
         /// <param name="FtpUserID">用户名</param>
         /// <param name="FtpPassword">密码</param>
         public  FtpWeb( string  FtpServerIP, string  FtpRemotePath, string  FtpUserID, string  FtpPassword)
         {
             ftpServerIP = FtpServerIP;
             ftpRemotePath = FtpRemotePath;
             ftpUserID = FtpUserID;
             ftpPassword = FtpPassword;
             ftpURI = "ftp://"  + ftpServerIP + "/"  + ftpRemotePath + "/" ;
         }
 
         /// <summary>
         /// 上传
         /// </summary>
         /// <param name="filename"></param>
         public  void  Upload( string  filename)
         {
             FileInfo fileInf = new  FileInfo(filename);
             string  uri = ftpURI + fileInf.Name;
             FtpWebRequest reqFTP;
 
             reqFTP = (FtpWebRequest)FtpWebRequest.Create( new  Uri(uri));
             reqFTP.Credentials = new  NetworkCredential(ftpUserID, ftpPassword);
             reqFTP.KeepAlive = false ;
             reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
             reqFTP.UseBinary = true ;
             reqFTP.ContentLength = fileInf.Length;
             int  buffLength = 2048;
             byte [] buff = new  byte [buffLength];
             int  contentLen;
             FileStream fs = fileInf.OpenRead();
             try
             {
                 Stream strm = reqFTP.GetRequestStream();
                 contentLen = fs.Read(buff, 0, buffLength);
                 while  (contentLen != 0)
                 {
                     strm.Write(buff, 0, contentLen);
                     contentLen = fs.Read(buff, 0, buffLength);
                 }
                 strm.Close();
                 fs.Close();
             }
             catch  (Exception ex)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Upload Error --> "  + ex.Message);
             }
         }
 
         /// <summary>
         /// 下载
         /// </summary>
         /// <param name="filePath"></param>
         /// <param name="fileName"></param>
         public  void  Download( string  filePath, string  fileName)
         {
             FtpWebRequest reqFTP;
             try
             {
                 FileStream outputStream = new  FileStream(filePath + "\\"  + fileName, FileMode.Create);
 
                 reqFTP = (FtpWebRequest)FtpWebRequest.Create( new  Uri(ftpURI + fileName));
                 reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                 reqFTP.UseBinary = true ;
                 reqFTP.Credentials = new  NetworkCredential(ftpUserID, ftpPassword);
                 FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                 Stream ftpStream = response.GetResponseStream();
                 long  cl = response.ContentLength;
                 int  bufferSize = 2048;
                 int  readCount;
                 byte [] buffer = new  byte [bufferSize];
 
                 readCount = ftpStream.Read(buffer, 0, bufferSize);
                 while  (readCount > 0)
                 {
                     outputStream.Write(buffer, 0, readCount);
                     readCount = ftpStream.Read(buffer, 0, bufferSize);
                 }
 
                 ftpStream.Close();
                 outputStream.Close();
                 response.Close();
             }
             catch  (Exception ex)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Download Error --> "  + ex.Message);
             }
         }
 
 
         /// <summary>
         /// 删除文件
         /// </summary>
         /// <param name="fileName"></param>
         public  void  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();
             }
             catch  (Exception ex)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Delete Error --> "  + ex.Message + "  文件名:"  + fileName);
             }
         }
 
         /// <summary>
         /// 删除文件夹
         /// </summary>
         /// <param name="folderName"></param>
         public  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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "Delete Error --> "  + ex.Message + "  文件名:"  + folderName);
             }
         }
 
         /// <summary>
         /// 获取当前目录下明细(包含文件和文件夹)
         /// </summary>
         /// <returns></returns>
         public  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);
 
                 //while (reader.Read() > 0)
                 //{
 
                 //}
                 string  line = reader.ReadLine();
                 //line = reader.ReadLine();
                 //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 ;
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "GetFilesDetailList Error --> "  + ex.Message);
                 return  downloadFiles;
             }
         }
        /// <summary>
         /// 获取当前目录下文件列表(仅文件)
         /// </summary>
         /// <returns></returns>
 
     public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表

    {
      string[] downloadFiles;
      FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(path));
      ftp.UseBinary = true;

      ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);//如果是匿名登录,则注释掉。
      StringBuilder result = new StringBuilder();
      try
       {

        ftp.Method = WebRequestMethods.Ftp.ListDirectory;
        WebResponse response = ftp.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'), 1);
        reader.Close();
        response.Close();
        downloadFiles = result.ToString().Split('\n');
        }
      catch (Exception ex)
      {
        throw ex;
      }
      return downloadFiles;
    }

/// <summary>
         /// 获取当前目录下所有的文件夹列表(仅文件夹)
         /// </summary>
         /// <returns></returns>
         public  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);
         }
 
         /// <summary>
         /// 判断当前目录下指定的子目录是否存在
         /// </summary>
         /// <param name="RemoteDirectoryName">指定的目录名</param>
         public  bool  DirectoryExist( string  RemoteDirectoryName)
         {
             string [] dirList = GetDirectoryList();
             foreach  ( string  str in  dirList)
             {
                 if  (str.Trim() == RemoteDirectoryName.Trim())
                 {
                     return  true ;
                 }
             }
             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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "MakeDir Error --> "  + ex.Message);
             }
         }
 
         /// <summary>
         /// 获取指定文件大小
         /// </summary>
         /// <param name="filename"></param>
         /// <returns></returns>
         public  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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "GetFileSize Error --> "  + ex.Message);
             }
             return  fileSize;
         }
 
         /// <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)
             {
                 Insert_Standard_ErrorLog.Insert( "FtpWeb" , "ReName Error --> "  + ex.Message);
             }
         }
 
         /// <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 + "/" ;
         }
 
         /// <summary>
         /// 删除订单目录
         /// </summary>
         /// <param name="ftpServerIP">FTP 主机地址</param>
         /// <param name="folderToDelete">FTP 用户名</param>
         /// <param name="ftpUserID">FTP 用户名</param>
         /// <param name="ftpPassword">FTP 密码</param>
         public  static  void  DeleteOrderDirectory( string  ftpServerIP, string  folderToDelete, string  ftpUserID, string  ftpPassword)
         {
             try {
                 if  (! string .IsNullOrEmpty(ftpServerIP) && ! string .IsNullOrEmpty(folderToDelete) && ! string .IsNullOrEmpty(ftpUserID) && ! string .IsNullOrEmpty(ftpPassword))
                 {
                     FtpWeb fw = new  FtpWeb(ftpServerIP, folderToDelete, ftpUserID, ftpPassword);
                     //进入订单目录
                     fw.GotoDirectory(folderToDelete, true );
                     //获取规格目录
                     string [] folders = fw.GetDirectoryList();
                     foreach  ( string  folder in  folders)
                     {
                         if  (! string .IsNullOrEmpty(folder) || folder != "" )
                         {
                             //进入订单目录
                             string  subFolder = folderToDelete + "/"  + folder;
                             fw.GotoDirectory(subFolder, true );
                             //获取文件列表
                             string [] files = fw.GetFileList( "*.*" );
                             if  (files != null )
                             {
                                 //删除文件
                                 foreach  ( string  file in  files)
                                 {
                                     fw.Delete(file);
                                 }
                             }
                             //删除冲印规格文件夹
                             fw.GotoDirectory(folderToDelete, true );
                             fw.RemoveDirectory(folder);
                         }
                     }
 
                     //删除订单文件夹
                     string  parentFolder = folderToDelete.Remove(folderToDelete.LastIndexOf( '/' ));
                     string  orderFolder = folderToDelete.Substring(folderToDelete.LastIndexOf( '/' ) + 1);
                     fw.GotoDirectory(parentFolder, true );
                     fw.RemoveDirectory(orderFolder);
                 }
                 else
                 {
                     throw  new  Exception( "FTP 及路径不能为空!" );
                 }
             }
             catch (Exception ex)
             {
                 throw  new  Exception( "删除订单时发生错误,错误信息为:"  + ex.Message);
             }
         }
     }
 
 
     public  class  Insert_Standard_ErrorLog
     {
         public  static  void  Insert( string  x, string  y)
         {
 
         }
     }
 
 
}

转载于:https://www.cnblogs.com/wzh5959/p/6892021.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值