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;
}
}
}
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com