志在指尖
用双手敲打未来

FTPHelper,FTP公共帮助类共享

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Net;
usingSystem.IO;
usingSystem.Threading;
usingSystem.Configuration;
namespaceFtpSyn
{
publicclassFtpHelper
{
//基本设置[url]ftp://400:ZOina2017@192.168.10.17/400backup[/url]
staticprivatestringpath=@”ftp://”+ConfigurationManager.AppSettings[“FtpServerIP”].ToString()+”/”;//目标路径
staticprivatestringftpip=ConfigurationManager.AppSettings[“FtpServerIP”].ToString();//ftpIP地址
staticprivatestringusername=ConfigurationManager.AppSettings[“FtpUserName”].ToString();//ftp用户名
staticprivatestringpassword=ConfigurationManager.AppSettings[“FtpPassWord”].ToString();//ftp密码
//获取ftp上面的文件和文件夹
publicstaticstring[]GetFileList(stringdir)
{
string[]downloadFiles;
StringBuilderresult=newStringBuilder();
FtpWebRequestrequest;
try
{
request=(FtpWebRequest)FtpWebRequest.Create(newUri(path+dir));
request.UseBinary=true;
request.Credentials=newNetworkCredential(username,password);//设置用户名和密码
request.Method=WebRequestMethods.Ftp.ListDirectory;
request.UseBinary=true;
request.UsePassive=false;//选择主动还是被动模式,这句要加上的。
request.KeepAlive=false;//一定要设置此属性,否则一次性下载多个文件的时候,会出现异常。
WebResponseresponse=request.GetResponse();
StreamReaderreader=newStreamReader(response.GetResponseStream());
stringline=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();
returnresult.ToString().Split(‘\n’);
}
catch(Exceptionex)
{
LogHelper.writeErrorLog(“获取ftp上面的文件和文件夹:”+ex.Message);
downloadFiles=null;
returndownloadFiles;
}
}
///<summary>
///从ftp服务器上获取文件并将内容全部转换成string返回
///</summary>
///<paramname=”fileName”></param>
///<paramname=”dir”></param>
///<returns></returns>
publicstaticstringGetFileStr(stringfileName,stringdir)
{
FtpWebRequestreqFTP;
try
{
reqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(path+dir+”/”+fileName));
reqFTP.Method=WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary=true;
reqFTP.Credentials=newNetworkCredential(username,password);
reqFTP.UsePassive=false;//选择主动还是被动模式,这句要加上的。
reqFTP.KeepAlive=false;//一定要设置此属性,否则一次性下载多个文件的时候,会出现异常。
FtpWebResponseresponse=(FtpWebResponse)reqFTP.GetResponse();
StreamftpStream=response.GetResponseStream();
StreamReaderreader=newStreamReader(ftpStream);
stringfileStr=reader.ReadToEnd();
reader.Close();
ftpStream.Close();
response.Close();
returnfileStr;
}
catch(Exceptionex)
{
LogHelper.writeErrorLog(“获取ftp文件并读取内容失败:”+ex.Message);
returnnull;
}
}
///<summary>
///获取文件大小
///</summary>
///<paramname=”file”>ip服务器下的相对路径</param>
///<returns>文件大小</returns>
publicstaticintGetFileSize(stringfile)
{
StringBuilderresult=newStringBuilder();
FtpWebRequestrequest;
try
{
request=(FtpWebRequest)FtpWebRequest.Create(newUri(path+file));
request.UseBinary=true;
request.Credentials=newNetworkCredential(username,password);//设置用户名和密码
request.Method=WebRequestMethods.Ftp.GetFileSize;
intdataLength=(int)request.GetResponse().ContentLength;
returndataLength;
}
catch(Exceptionex)
{
Console.WriteLine(“获取文件大小出错:”+ex.Message);
return-1;
}
}
///<summary>
///文件上传
///</summary>
///<paramname=”filePath”>原路径(绝对路径)包括文件名</param>
///<paramname=”objPath”>目标文件夹:服务器下的相对路径不填为根目录</param>
publicstaticvoidFileUpLoad(stringfilePath,stringobjPath=””)
{
try
{
stringurl=path;
if(objPath!=””)
url+=objPath+”/”;
try
{
FtpWebRequestreqFTP=null;
//待上传的文件(全路径)
try
{
FileInfofileInfo=newFileInfo(filePath);
using(FileStreamfs=fileInfo.OpenRead())
{
longlength=fs.Length;
reqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(url+fileInfo.Name));
//设置连接到FTP的帐号密码
reqFTP.Credentials=newNetworkCredential(username,password);
//设置请求完成后是否保持连接
reqFTP.KeepAlive=false;
//指定执行命令
reqFTP.Method=WebRequestMethods.Ftp.UploadFile;
//指定数据传输类型
reqFTP.UseBinary=true;
using(Streamstream=reqFTP.GetRequestStream())
{
//设置缓冲大小
intBufferLength=5120;
byte[]b=newbyte[BufferLength];
inti;
while((i=fs.Read(b,0,BufferLength))>0)
{
stream.Write(b,0,i);
}
Console.WriteLine(“上传文件成功”);
}
}
}
catch(Exceptionex)
{
Console.WriteLine(“上传文件失败错误为”+ex.Message);
}
finally
{
}
}
catch(Exceptionex)
{
Console.WriteLine(“上传文件失败错误为”+ex.Message);
}
finally
{
}
}
catch(Exceptionex)
{
Console.WriteLine(“上传文件失败错误为”+ex.Message);
}
}
///<summary>
///删除文件
///</summary>
///<paramname=”fileName”>服务器下的相对路径包括文件名</param>
publicstaticvoidDeleteFileName(stringfileName)
{
try
{
FileInfofileInf=newFileInfo(ftpip+””+fileName);
stringuri=path+fileName;
FtpWebRequestreqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(uri));
//指定数据传输类型
reqFTP.UseBinary=true;
//ftp用户名和密码
reqFTP.Credentials=newNetworkCredential(username,password);
//默认为true,连接不会被关闭
//在一个命令之后被执行
reqFTP.KeepAlive=false;
//指定执行什么命令
reqFTP.Method=WebRequestMethods.Ftp.DeleteFile;
FtpWebResponseresponse=(FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch(Exceptionex)
{
Console.WriteLine(“删除文件出错:”+ex.Message);
}
}
///<summary>
///新建目录上一级必须先存在
///</summary>
///<paramname=”dirName”>服务器下的相对路径</param>
publicstaticvoidMakeDir(stringdirName)
{
try
{
stringuri=path+dirName;
FtpWebRequestreqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(uri));
//指定数据传输类型
reqFTP.UseBinary=true;
//ftp用户名和密码
reqFTP.Credentials=newNetworkCredential(username,password);
reqFTP.Method=WebRequestMethods.Ftp.MakeDirectory;
FtpWebResponseresponse=(FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch(Exceptionex)
{
Console.WriteLine(“创建目录出错:”+ex.Message);
}
}
///<summary>
///删除目录上一级必须先存在
///</summary>
///<paramname=”dirName”>服务器下的相对路径</param>
publicstaticvoidDelDir(stringdirName)
{
try
{
stringuri=path+dirName;
FtpWebRequestreqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(uri));
//ftp用户名和密码
reqFTP.Credentials=newNetworkCredential(username,password);
reqFTP.Method=WebRequestMethods.Ftp.RemoveDirectory;
FtpWebResponseresponse=(FtpWebResponse)reqFTP.GetResponse();
response.Close();
}
catch(Exceptionex)
{
Console.WriteLine(“删除目录出错:”+ex.Message);
}
}
///<summary>
///从ftp服务器上获得文件夹列表
///</summary>
///<paramname=”RequedstPath”>服务器下的相对路径</param>
///<returns></returns>
publicstaticList<string>GetDirctory(stringRequedstPath)
{
List<string>strs=newList<string>();
try
{
stringuri=path+RequedstPath;//目标路径path为服务器地址
FtpWebRequestreqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(uri));
//ftp用户名和密码
reqFTP.Credentials=newNetworkCredential(username,password);
reqFTP.Method=WebRequestMethods.Ftp.ListDirectoryDetails;
WebResponseresponse=reqFTP.GetResponse();
StreamReaderreader=newStreamReader(response.GetResponseStream());//中文文件名
stringline=reader.ReadLine();
while(line!=null)
{
if(line.Contains(“<DIR>”))
{
stringmsg=line.Substring(line.LastIndexOf(“<DIR>”)+5).Trim();
strs.Add(msg);
}
line=reader.ReadLine();
}
reader.Close();
response.Close();
returnstrs;
}
catch(Exceptionex)
{
Console.WriteLine(“获取目录出错:”+ex.Message);
}
returnstrs;
}
///<summary>
///从ftp服务器上获得文件列表
///</summary>
///<paramname=”RequedstPath”>服务器下的相对路径</param>
///<returns></returns>
publicstaticList<string>GetFile(stringRequedstPath)
{
List<string>strs=newList<string>();
try
{
stringuri=path+RequedstPath;//目标路径path为服务器地址
FtpWebRequestreqFTP=(FtpWebRequest)FtpWebRequest.Create(newUri(uri));
//ftp用户名和密码
reqFTP.Credentials=newNetworkCredential(username,password);
reqFTP.Method=WebRequestMethods.Ftp.ListDirectoryDetails;
WebResponseresponse=reqFTP.GetResponse();
StreamReaderreader=newStreamReader(response.GetResponseStream());//中文文件名
stringline=reader.ReadLine();
while(line!=null)
{
if(!line.Contains(“<DIR>”))
{
stringmsg=line.Substring(39).Trim();
strs.Add(msg);
}
line=reader.ReadLine();
}
reader.Close();
response.Close();
returnstrs;
}
catch(Exceptionex)
{
Console.WriteLine(“获取文件出错:”+ex.Message);
}
returnstrs;
}
}
}

未经允许不得转载:IT技术网站 » FTPHelper,FTP公共帮助类共享
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载