欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于C#實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FTP操作工具

 更新時(shí)間:2022年08月30日 16:33:11   作者:Csharp 小記  
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FTP操作工具,可以實(shí)現(xiàn)FTP上傳、下載、重命名、刷新、刪除功能,感興趣的可以了解一下

實(shí)現(xiàn)功能

實(shí)現(xiàn)使用FTP上傳、下載、重命名、刷新、刪除功能

開發(fā)環(huán)境

開發(fā)工具: Visual Studio 2013

.NET Framework版本:4.5

實(shí)現(xiàn)代碼

  /*FTP操作公共類*/
 
  private string FtpIp, FtpPort, FtpUser, FtpPwd, FtpUrl;
 
  private FTPUtil()
  {
 
  }
 
  public FTPUtil(string ftpIp, string ftpPort, string ftpUser, string ftpPwd)
  {
      FtpIp = ftpIp;
      FtpPort = ftpPort;
      FtpUser = ftpUser;
      FtpPwd = ftpPwd;
 
      FtpUrl = "ftp://" + ftpIp + ":" + ftpPort + "/";
  }
 
  private FtpWebRequest GetFtpWebRequest(string path, string method)
  {
      FtpWebRequest Ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(FtpUrl + "/" + path));
      Ftp.Credentials = new NetworkCredential(FtpUser, FtpPwd);
      Ftp.KeepAlive = false;
      Ftp.UsePassive = true;
      Ftp.Method = method;
      return Ftp;
  }
 
  /// <summary>
  /// 獲取路徑下所有文件夾
  /// </summary>
  /// <param name="dirName"></param>
  /// <returns></returns>
  public List<FileModel> GetDirs(string dirName)
  {
      return GetAllFiles(dirName).FindAll(s => s.Type == "文件夾");
  }
 
  /// <summary>
  /// 獲取路徑下所有文件
  /// </summary>
  /// <param name="dirName"></param>
  /// <returns></returns>
  public List<FileModel> GetFiles(string dirName)
  {
      return GetAllFiles(dirName).FindAll(s => s.Type == "文件");
  }
 
  /// <summary>
  /// 獲取路徑下所有項(xiàng)目
  /// </summary>
  /// <param name="dirName"></param>
  /// <returns></returns>
  public List<FileModel> GetAllFiles(string dirName)
  {
      List<FileModel> fileList = new List<FileModel>();
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(dirName, WebRequestMethods.Ftp.ListDirectoryDetails);
 
          using (WebResponse response = Ftp.GetResponse())
          {
              using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
              {
                  string line = "";
                  while ((line = reader.ReadLine()) != null)
                  {
                      fileList.Add(ConvertFile(line, dirName));
                  }
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
      return fileList;
  }
 
  /// <summary>
  /// FTP文件信息轉(zhuǎn)換
  /// </summary>
  /// <param name="value"></param>
  /// <param name="dirName"></param>
  /// <returns></returns>
  private FileModel ConvertFile(string value, string dirName)
  {
      string[] arr = value.Split(new string[] { " " },4, StringSplitOptions.RemoveEmptyEntries);
 
     FileModel model = new FileModel();
      model.Date = arr[0];
      model.Time = arr[1];
      if (arr[2] == "<DIR>")
      {
          model.Type = "文件夾";
          model.Size = 0;
      }
      else
      {
          model.Type = "文件";
          model.Size = Convert.ToInt64(arr[2]);
      }
      model.Name = arr[3];
      model.FullName = dirName + "/" + model.Name;
      return model;
  }
 
  /// <summary>
  /// 上傳
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="desFile"></param>
  public void Upload(string fileName, string desFile)
  {
      try
      {
          FileInfo fileInfo = new FileInfo(fileName);
 
          FtpWebRequest Ftp = GetFtpWebRequest(desFile, WebRequestMethods.Ftp.UploadFile);
          Ftp.UseBinary = true;
          Ftp.ContentLength = fileInfo.Length;
 
 
          int buffLength = 2048;
          byte[] buff = new byte[buffLength];
          int len = 0;
          using (FileStream fs = fileInfo.OpenRead())
          {
              using (Stream stream = Ftp.GetRequestStream())
              {
                  while ((len = fs.Read(buff, 0, buffLength)) != 0)
                  {
                      stream.Write(buff, 0, buffLength);
                  }
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
 
 
  }
 
  /// <summary>
  /// 下載
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="desFile"></param>
  public void DownLoad(string fileName, string desFile)
  {
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.DownloadFile);
          Ftp.UseBinary = true;
 
          FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();
          int buffLength = 2048;
          byte[] buff = new byte[buffLength];
          int len = 0;
          using (FileStream fs = new FileStream(desFile, FileMode.Create))
          {
              using (Stream stream = response.GetResponseStream())
              {
                  while ((len = stream.Read(buff, 0, buffLength)) != 0)
                  {
                      fs.Write(buff, 0, buffLength);
                  }
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }
 
  /// <summary>
  /// 刪除文件
  /// </summary>
  /// <param name="fileName"></param>
  public void DeleteFile(string fileName)
  {
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.DeleteFile);
 
          FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();
 
          using (Stream datastream = response.GetResponseStream())
          {
              using (StreamReader sr = new StreamReader(datastream))
              {
                  sr.ReadToEnd();
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }
 
 
  /// <summary>
  /// 重命名
  /// </summary>
  /// <param name="fileName"></param>
  /// <param name="newName"></param>
  public void ReName(string fileName, string newName)
  {
      try
      {
          FtpWebRequest Ftp = GetFtpWebRequest(fileName, WebRequestMethods.Ftp.Rename);
          Ftp.RenameTo = newName;
          Ftp.UseBinary = true;
 
          FtpWebResponse response = (FtpWebResponse)Ftp.GetResponse();
 
          using (Stream datastream = response.GetResponseStream())
          {
              using (StreamReader sr = new StreamReader(datastream))
              {
                  sr.ReadToEnd();
              }
          }
      }
      catch (Exception ex)
      {
          throw ex;
      }
  }

實(shí)現(xiàn)效果

FTP 操作工具視頻演示

以上就是基于C#實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FTP操作工具的詳細(xì)內(nèi)容,更多關(guān)于C# FTP操作工具的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字

    C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字

    這篇文章主要介紹了C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字,需要的朋友可以參考下
    2018-04-04
  • C#集合之列表的用法

    C#集合之列表的用法

    這篇文章介紹了C#集合之列表的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#中Hashtable和Dictionary的區(qū)別與用法示例

    C#中Hashtable和Dictionary的區(qū)別與用法示例

    由于 Hashtable 和 Dictionary 同時(shí)存在, 在使用場(chǎng)景上必然存在選擇性, 并不任何時(shí)刻都能相互替代。所以這篇文章主要給大家介紹了關(guān)于C#中Hashtable和Dictionary區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • C#實(shí)現(xiàn)分頁組件的方法

    C#實(shí)現(xiàn)分頁組件的方法

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)分頁組件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C#中?、?.、??、??=運(yùn)算符的用法

    C#中?、?.、??、??=運(yùn)算符的用法

    本文主要介紹了C#中?、?.、??、??=運(yùn)算符的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • C#實(shí)現(xiàn)windows系統(tǒng)重啟和關(guān)機(jī)的代碼詳解

    C#實(shí)現(xiàn)windows系統(tǒng)重啟和關(guān)機(jī)的代碼詳解

    這篇文章主要介紹了C#實(shí)現(xiàn)windows系統(tǒng)重啟和關(guān)機(jī)的的方法,涉及C#調(diào)用windows系統(tǒng)命令實(shí)現(xiàn)控制開機(jī)、關(guān)機(jī)等操作的技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2024-02-02
  • C# 獲取當(dāng)前總毫秒數(shù)的實(shí)例講解

    C# 獲取當(dāng)前總毫秒數(shù)的實(shí)例講解

    這篇文章主要介紹了C# 獲取當(dāng)前總毫秒數(shù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#實(shí)現(xiàn)計(jì)算年齡的簡(jiǎn)單方法匯總

    C#實(shí)現(xiàn)計(jì)算年齡的簡(jiǎn)單方法匯總

    本文給大家分享的是C#代碼實(shí)現(xiàn)的簡(jiǎn)單實(shí)用的給出用戶的出生日期,計(jì)算出用戶的年齡的代碼,另外附上其他網(wǎng)友的方法,算是對(duì)計(jì)算年齡的一次小結(jié),希望大家能夠喜歡。
    2015-05-05
  • C# 減少嵌套循環(huán)的兩種方法

    C# 減少嵌套循環(huán)的兩種方法

    最近在解決性能優(yōu)化的問題,看到了一堆嵌套循環(huán),四五層級(jí)的循環(huán)真的有點(diǎn)過分了,在數(shù)據(jù)量成萬,十萬級(jí)別的時(shí)候,真的非常影響性能。本文介紹了C# 減少嵌套循環(huán)的兩種方法,幫助各位選擇適合自己的優(yōu)化方案,優(yōu)化程序性能
    2021-06-06
  • C#類中方法的執(zhí)行順序是什么

    C#類中方法的執(zhí)行順序是什么

    有些中級(jí)開發(fā)小伙伴還是搞不太明白在繼承父類以及不同場(chǎng)景實(shí)例化的情況下,父類和子類的各種方法的執(zhí)行順序到底是什么,本文就來介紹一下
    2021-05-05

最新評(píng)論