C#實現(xiàn)自定義FTP操作封裝類實例
更新時間:2015年03月26日 09:26:46 作者:lele
這篇文章主要介紹了C#實現(xiàn)自定義FTP操作封裝類,涉及C#操作FTP的連接、傳輸、下載等操作的實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下
本文實例講述了C#實現(xiàn)自定義FTP操作封裝類。分享給大家供大家參考。具體如下:
這個C#類封裝了FTP的常用操作,包括連接ftp服務器、列表服務器上的目錄和文件,從ftp下載文件,上傳文件到ftp服務器等等
using System;
using System.Text;
using System.IO;
namespace DotNet.Utilities
{
public class FTPOperater
{
#region 屬性
private FTPClient ftp;
/// <summary>
/// 全局FTP訪問變量
/// </summary>
public FTPClient Ftp
{
get { return ftp; }
set { ftp = value; }
}
private string _server;
/// <summary>
/// Ftp服務器
/// </summary>
public string Server
{
get { return _server; }
set { _server = value; }
}
private string _User;
/// <summary>
/// Ftp用戶
/// </summary>
public string User
{
get { return _User; }
set { _User = value; }
}
private string _Pass;
/// <summary>
/// Ftp密碼
/// </summary>
public string Pass
{
get { return _Pass; }
set { _Pass = value; }
}
private string _FolderZJ;
/// <summary>
/// Ftp密碼
/// </summary>
public string FolderZJ
{
get { return _FolderZJ; }
set { _FolderZJ = value; }
}
private string _FolderWX;
/// <summary>
/// Ftp密碼
/// </summary>
public string FolderWX
{
get { return _FolderWX; }
set { _FolderWX = value; }
}
#endregion
/// <summary>
/// 得到文件列表
/// </summary>
/// <returns></returns>
public string[] GetList(string strPath)
{
if (ftp == null) ftp = this.getFtpClient();
ftp.Connect();
ftp.ChDir(strPath);
return ftp.Dir("*");
}
/// <summary>
/// 下載文件
/// </summary>
/// <param name="ftpFolder">ftp目錄</param>
/// <param name="ftpFileName">ftp文件名</param>
/// <param name="localFolder">本地目錄</param>
/// <param name="localFileName">本地文件名</param>
public bool GetFile(string ftpFolder, string ftpFileName, string localFolder, string localFileName)
{
try
{
if (ftp == null) ftp = this.getFtpClient();
if (!ftp.Connected)
{
ftp.Connect();
ftp.ChDir(ftpFolder);
}
ftp.Get(ftpFileName, localFolder, localFileName);
return true;
}
catch
{
try
{
ftp.DisConnect();
ftp = null;
}
catch { ftp = null; }
return false;
}
}
/// <summary>
/// 修改文件
/// </summary>
/// <param name="ftpFolder">本地目錄</param>
/// <param name="ftpFileName">本地文件名temp</param>
/// <param name="localFolder">本地目錄</param>
/// <param name="localFileName">本地文件名</param>
public bool AddMSCFile(string ftpFolder, string ftpFileName, string localFolder, string localFileName, string BscInfo)
{
string sLine = "";
string sResult = "";
string path = "獲得應用程序所在的完整的路徑";
path = path.Substring(0, path.LastIndexOf("\\"));
try
{
FileStream fsFile = new FileStream(ftpFolder + "\\" + ftpFileName, FileMode.Open);
FileStream fsFileWrite = new FileStream(localFolder + "\\" + localFileName, FileMode.Create);
StreamReader sr = new StreamReader(fsFile);
StreamWriter sw = new StreamWriter(fsFileWrite);
sr.BaseStream.Seek(0, SeekOrigin.Begin);
while (sr.Peek() > -1)
{
sLine = sr.ReadToEnd();
}
string[] arStr = sLine.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < arStr.Length - 1; i++)
{
sResult += BscInfo + "," + arStr[i].Trim() + "\n";
}
sr.Close();
byte[] connect = new UTF8Encoding(true).GetBytes(sResult);
fsFileWrite.Write(connect, 0, connect.Length);
fsFileWrite.Flush();
sw.Close();
fsFile.Close();
fsFileWrite.Close();
return true;
}
catch (Exception e)
{
return false;
}
}
/// <summary>
/// 刪除文件
/// </summary>
/// <param name="ftpFolder">ftp目錄</param>
/// <param name="ftpFileName">ftp文件名</param>
public bool DelFile(string ftpFolder, string ftpFileName)
{
try
{
if (ftp == null) ftp = this.getFtpClient();
if (!ftp.Connected)
{
ftp.Connect();
ftp.ChDir(ftpFolder);
}
ftp.Delete(ftpFileName);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 上傳文件
/// </summary>
/// <param name="ftpFolder">ftp目錄</param>
/// <param name="ftpFileName">ftp文件名</param>
public bool PutFile(string ftpFolder, string ftpFileName)
{
try
{
if (ftp == null) ftp = this.getFtpClient();
if (!ftp.Connected)
{
ftp.Connect();
ftp.ChDir(ftpFolder);
}
ftp.Put(ftpFileName);
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 下載文件
/// </summary>
/// <param name="ftpFolder">ftp目錄</param>
/// <param name="ftpFileName">ftp文件名</param>
/// <param name="localFolder">本地目錄</param>
/// <param name="localFileName">本地文件名</param>
public bool GetFileNoBinary(string ftpFolder, string ftpFileName, string localFolder, string localFileName)
{
try
{
if (ftp == null) ftp = this.getFtpClient();
if (!ftp.Connected)
{
ftp.Connect();
ftp.ChDir(ftpFolder);
}
ftp.GetNoBinary(ftpFileName, localFolder, localFileName);
return true;
}
catch
{
try
{
ftp.DisConnect();
ftp = null;
}
catch
{
ftp = null;
}
return false;
}
}
/// <summary>
/// 得到FTP上文件信息
/// </summary>
/// <param name="ftpFolder">FTP目錄</param>
/// <param name="ftpFileName">ftp文件名</param>
public string GetFileInfo(string ftpFolder, string ftpFileName)
{
string strResult = "";
try
{
if (ftp == null) ftp = this.getFtpClient();
if (ftp.Connected) ftp.DisConnect();
ftp.Connect();
ftp.ChDir(ftpFolder);
strResult = ftp.GetFileInfo(ftpFileName);
return strResult;
}
catch
{
return "";
}
}
/// <summary>
/// 測試FTP服務器是否可登陸
/// </summary>
public bool CanConnect()
{
if (ftp == null) ftp = this.getFtpClient();
try
{
ftp.Connect();
ftp.DisConnect();
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 得到FTP上文件信息
/// </summary>
/// <param name="ftpFolder">FTP目錄</param>
/// <param name="ftpFileName">ftp文件名</param>
public string GetFileInfoConnected(string ftpFolder, string ftpFileName)
{
string strResult = "";
try
{
if (ftp == null) ftp = this.getFtpClient();
if (!ftp.Connected)
{
ftp.Connect();
ftp.ChDir(ftpFolder);
}
strResult = ftp.GetFileInfo(ftpFileName);
return strResult;
}
catch
{
return "";
}
}
/// <summary>
/// 得到文件列表
/// </summary>
/// <param name="ftpFolder">FTP目錄</param>
/// <returns>FTP通配符號</returns>
public string[] GetFileList(string ftpFolder, string strMask)
{
string[] strResult;
try
{
if (ftp == null) ftp = this.getFtpClient();
if (!ftp.Connected)
{
ftp.Connect();
ftp.ChDir(ftpFolder);
}
strResult = ftp.Dir(strMask);
return strResult;
}
catch
{
return null;
}
}
/// <summary>
///得到FTP傳輸對象
/// </summary>
public FTPClient getFtpClient()
{
FTPClient ft = new FTPClient();
ft.RemoteHost = this.Server;
ft.RemoteUser = this.User;
ft.RemotePass = this.Pass;
return ft;
}
}
}
希望本文所述對大家的C#程序設計有所幫助。
相關文章
C#調(diào)用Python程序傳參數(shù)獲得返回值
C# 調(diào)用 Python 程序有多種方式,本文主要介紹了4種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
C#實現(xiàn)判斷一個時間點是否位于給定時間區(qū)間的方法
這篇文章主要介紹了C#實現(xiàn)判斷一個時間點是否位于給定時間區(qū)間的方法,涉及C#針對時間的轉(zhuǎn)換與判定相關技巧,需要的朋友可以參考下2015-08-08
C#設計模式之Mediator中介者模式解決程序員的七夕緣分問題示例
這篇文章主要介紹了C#設計模式之Mediator中介者模式解決程序員的七夕緣分問題,簡單說明了中介者模式的定義并結(jié)合七夕緣分問題實例分析了中介者模式的具體使用技巧,需要的朋友可以參考下2017-09-09
操作xml,將xml數(shù)據(jù)顯示到treeview的C#代碼
這篇文章主要介紹了操作xml,將xml數(shù)據(jù)顯示到treeview的C#代碼,有需要的朋友可以參考一下2013-11-11

