知识大全 C# FTP操作类
Posted 文件
篇首语:人不能只做正确的选择,偶尔也得做一些喜欢的选择。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C# FTP操作类相关的知识,希望对你有一定的参考价值。
C# FTP操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
最近要做个用ftp读取文件 并在浏览器中直接打开图片的小程序 最终写了这个FTP类库 发上来给大家共享共享
using System;
using System Collections Generic;
using System Text;
using System Net;
using System IO;
namespace Utility
public class FtpUpDown
string ftpServerIP;
string ftpUserID;
string ftpPassword;
FtpWebRequest reqFTP;
private void Connect(String path)//连接ftp
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest Create(new Uri(path));
// 指定数据传输类型
reqFTP UseBinary = true;
// ftp用户名和密码
reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);
public FtpUpDown(string ftpServerIP string ftpUserID string ftpPassword)
this ftpServerIP = ftpServerIP;
this ftpUserID = ftpUserID;
this ftpPassword = ftpPassword;
//都调用这个
private string[] GetFileList(string path string WRMethods)//上面的代码示例了如何从ftp服务器上获得文件列表
string[] downloadFiles;
StringBuilder result = new StringBuilder();
try
Connect(path);
reqFTP Method = WRMethods;
WebResponse response = reqFTP 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 ) );
reader Close();
response Close();
return result ToString() Split( \\n );
catch (Exception ex)
Log WriteError( Get FileList Error: + ex Message);
downloadFiles = null;
return downloadFiles;
public string[] GetFileList(string path)//上面的代码示例了如何从ftp服务器上获得文件列表
return GetFileList( ftp:// + ftpServerIP + / + path WebRequestMethods Ftp ListDirectory);
public string[] GetFileList()//上面的代码示例了如何从ftp服务器上获得文件列表
return GetFileList( ftp:// + ftpServerIP + / WebRequestMethods Ftp ListDirectory);
public void Upload(string filename) //上面的代码实现了从ftp服务器上载文件的功能
FileInfo fileInf = new FileInfo(filename);
string uri = ftp:// + ftpServerIP + / + fileInf Name;
Connect(uri);//连接
// 默认为true 连接不会被关闭
// 在一个命令之后被执行
reqFTP KeepAlive = false;
// 指定执行什么命令
reqFTP Method = WebRequestMethods Ftp UploadFile;
// 上传文件时通知服务器文件的大小
reqFTP ContentLength = fileInf Length;
// 缓冲大小设置为kb
int buffLength = ;
byte[] buff = new byte[buffLength];
int contentLen;
// 打开一个文件流(System IO FileStream) 去读上传的文件
FileStream fs = fileInf OpenRead();
try
// 把上传的文件写入流
Stream strm = reqFTP GetRequestStream();
// 每次读文件流的kb
contentLen = fs Read(buff buffLength);
// 流内容没有结束
while (contentLen != )
// 把内容从file stream 写入upload stream
strm Write(buff contentLen);
contentLen = fs Read(buff buffLength);
// 关闭两个流
strm Close();
fs Close();
catch (Exception ex)
Log WriteError( Upload Error: + ex Message);
public bool Download(string filePath string fileName out string errorinfo)////上面的代码实现了从ftp服务器下载文件的功能
try
String onlyFileName = Path GetFileName(fileName);
string newFileName = filePath + \\\\ + onlyFileName;
if (File Exists(newFileName))
errorinfo = string Format( 本地文件 已存在 无法下载 newFileName);
return false;
string url = ftp:// + ftpServerIP + / + fileName;
Connect(url);//连接
reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
Stream ftpStream = response GetResponseStream();
long cl = response ContentLength;
int bufferSize = ;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream Read(buffer bufferSize);
FileStream outputStream = new FileStream(newFileName FileMode Create);
while (readCount > )
outputStream Write(buffer readCount);
readCount = ftpStream Read(buffer bufferSize);
ftpStream Close();
outputStream Close();
response Close();
errorinfo = ;
return true;
catch (Exception ex)
errorinfo = string Format( 因 无法下载 ex Message);
return false;
//删除文件
public void DeleteFileName(string fileName)
try
FileInfo fileInf = new FileInfo(fileName);
string uri = ftp:// + ftpServerIP + / + fileInf Name;
Connect(uri);//连接
// 默认为true 连接不会被关闭
// 在一个命令之后被执行
reqFTP KeepAlive = false;
// 指定执行什么命令
reqFTP Method = WebRequestMethods Ftp DeleteFile;
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
response Close();
catch (Exception ex)
Log WriteError( 删除错误: + ex Message);
//创建目录
public void MakeDir(string dirName)
try
string uri = ftp:// + ftpServerIP + / + dirName;
Connect(uri);//连接
reqFTP Method = WebRequestMethods Ftp MakeDirectory;
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
response Close();
catch (Exception ex)
Log WriteError( 创建目录错误: + ex Message);
//删除目录
public void delDir(string dirName)
try
string uri = ftp:// + ftpServerIP + / + dirName;
Connect(uri);//连接
reqFTP Method = WebRequestMethods Ftp RemoveDirectory;
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
response Close();
catch (Exception ex)
Log WriteError( 删除目录错误: + ex Message);
//获得文件大小
public long GetFileSize(string filename)
long fileSize = ;
try
FileInfo fileInf = new FileInfo(filename);
string uri = ftp:// + ftpServerIP + / + fileInf Name;
Connect(uri);//连接
reqFTP Method = WebRequestMethods Ftp GetFileSize;
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
fileSize = response ContentLength;
response Close();
catch (Exception ex)
Log WriteError( 获得文件大小错误: + ex Message);
return fileSize;
//文件改名
public void Rename(string currentFilename string newFilename)
try
FileInfo fileInf = new FileInfo(currentFilename);
string uri = ftp:// + ftpServerIP + / + fileInf Name;
Connect(uri);//连接
reqFTP Method = WebRequestMethods Ftp Rename;
reqFTP RenameTo = newFilename;
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
response Close();
catch (Exception ex)
Log WriteError( 文件改名错误: + ex Message);
//读取文件
public Stream ReadFile(string fileName)
try
string url = ftp:// + ftpServerIP + / + fileName;
Connect(url);//连接
reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);
FtpWebResponse response = (FtpWebResponse)reqFTP GetResponse();
Stream ftpStream = response GetResponseStream();
return ftpStream;
catch (Exception ex)
Log WriteError( 读取文件错误: + ex Message);
return null;
//获得文件明晰
public string[] GetFilesDetailList()
return GetFileList( ftp:// + ftpServerIP + / WebRequestMethods Ftp ListDirectoryDetails);
//获得文件明晰
public string[] GetFilesDetailList(string path)
return GetFileList( ftp:// + ftpServerIP + / + path WebRequestMethods Ftp ListDirectoryDetails);
// 文件存在检查
public bool fileCheckExist(string fileName)
bool success = false;
FtpWebResponse response = null;
StreamReader reader = null;
try
string url = ftp:// + ftpServerIP + / + fileName;
Connect(url);//连接
reqFTP Credentials = new NeorkCredential(ftpUserID ftpPassword);
response = (FtpWebResponse)reqFTP GetResponse();
reader = new StreamReader(response GetResponseStream());
string line = reader ReadLine();
if (line != null)
success = true;
catch (Exception)
success = false;
finally
if (reader != null)
reader Close();
if (response != null)
response Close();
return success;
cha138/Article/program/net/201311/11445
相关参考
c#Stack操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Stack类代码 usin
C#封装Word常用操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingSystem
C#封装Excel常用操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingS
JavaFTP客户端类库比较 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 「导读」本文介绍了在
C#创建简单的验证码操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先创建一个CLASS类
新建类库MyTestDLL 右击项目“MyTestDLL”》属性》生成》勾选“为互操作注册” 打开 AssemblyInfocs&nb
C#学习之——认识C#的内部类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C#中的内部类能够
C#操作消息队列的代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这是一个关于C#操作消息队
C#文件操作全收录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文收集了目前最为常用的C#经
C#接口和抽象类技术特点浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一C#抽象类 C#