中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# FTP操作類分享

發布時間:2020-08-27 22:05:47 來源:腳本之家 閱讀:135 作者:孤者自清 欄目:編程語言

本文實例為大家分享了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


 }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南木林县| 竹山县| 无为县| 木里| 丽江市| 共和县| 深泽县| 漯河市| 商丘市| 睢宁县| 古交市| 六盘水市| 郑州市| 瓮安县| 六安市| 梁山县| 嘉峪关市| 平顶山市| 大英县| 广河县| 景泰县| 建瓯市| 嘉定区| 松原市| 德惠市| 科技| 天峨县| 朝阳区| 南岸区| 蒙阴县| 洪江市| 东乡县| 分宜县| 东丽区| 宁陵县| 贡山| 扶绥县| 枞阳县| 资中县| 油尖旺区| 双桥区|