这个ftpClient是从网上找来的,自己加了断点续传的方法
当然,大家还要看看Main方法
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.IO;
namespaceftpGet
{
classProgram
{
staticstringremotingFolder=System.Configuration.ConfigurationSettings.AppSettings["remotingFolder"];//远程ftp文件目录
staticstringlocalFolder=System.Configuration.ConfigurationSettings.AppSettings["localFolder"];//要下载到的本地目录
staticstringftpServer=System.Configuration.ConfigurationSettings.AppSettings["ftpServer"];//ftp服务器
staticstringuser=System.Configuration.ConfigurationSettings.AppSettings["user"];//用户名
staticstringpwd=System.Configuration.ConfigurationSettings.AppSettings["pwd"];//密码
staticstringport=System.Configuration.ConfigurationSettings.AppSettings["port"];//端口
staticvoidMain(string[]args)
{
FTPClientclient=newFTPClient(ftpServer,"/",user,pwd,int.Parse(port));
client.Connect();
GetFolder("*",remotingFolder,client,CreateFolder());
client.DisConnect();
ClearFolder();
Console.WriteLine("下载完毕");
System.Threading.Thread.Sleep(3000);
}
///<summary>
///在本地目录下创建一个以日期为名称的目录,我做这个ftp的主要目的是为了每天都备份
///</summary>
///<returns>创建的目录名</returns>
privatestaticstringCreateFolder()
{
stringfolder=localFolder+"\\"+DateTime.Now.ToShortDateString();
if(!Directory.Exists(folder))
Directory.CreateDirectory(folder);
returnfolder;
}
///<summary>
///在下载结束后清空程序目录的多余文件
///</summary>
privatestaticvoidClearFolder()
{
stringfolder=Environment.CurrentDirectory;
string[]dictorys=Directory.GetFiles(folder);
foreach(stringdictoryindictorys)
{
FileInfoinfo=newFileInfo(dictory);
if(info.Length==0)
File.Delete(dictory);
}
}
///<summary>
///递归获取ftp文件夹的内容
///</summary>
///<paramname="fileMark">文件标记</param>
///<paramname="path">远程路径</param>
///<paramname="client"></param>
///<paramname="folder"></param>
privatestaticvoidGetFolder(stringfileMark,stringpath,FTPClientclient,stringfolder)
{
string[]dirs=client.Dir(path);//获取目录下的内容
client.ChDir(path);//改变目录
foreach(stringdirindirs)
{
string[]infos=dir.Split('');
stringinfo=infos[infos.Length-1].Replace("\r","");
if(dir.StartsWith("d")&&!string.IsNullOrEmpty(dir))//为目录
{
if(!info.EndsWith(".")&&!info.EndsWith(".."))//筛选出真实的目录
{
Directory.CreateDirectory(folder+"\\"+info);
GetFolder(fileMark,path+"/"+info,client,folder+"\\"+info);
client.ChDir(path);
}
}
elseif(dir.StartsWith("-r"))//为文件
{
stringfile=folder+"\\"+info;
if(File.Exists(file))
{
longremotingSize=client.GetFileSize(info);
FileInfofileInfo=newFileInfo(file);
longlocalSize=fileInfo.Length;
if(remotingSize!=localSize)//短点续传
{
client.GetBrokenFile(info,folder,info,localSize);
}
}
else
{
client.GetFile(info,folder,info);//下载文件
Console.WriteLine("文件"+folder+info+"已经下载");
}
}
}
}
}
}
配置文件
<?xmlversion="1.0"encoding="utf-8"?><configuration><appSettings><addkey="remotingFolder"value="/temp"/><addkey="localFolder"value="c:\temp"/><addkey="ftpServer"value="*"/><addkey="user"value="*"/><addkey="pwd"value="*"/><addkey="port"value="21"/></appSettings></configuration>
分享到:
相关推荐
c#上传下载ftp(支持断点续传).docx
c#上传下载ftp(支持断点续传) .doc
实现FTP上传,暂停断点续传等功能。已经测试过了,可以使用。希望大家多给点意见,是功能更完善。
C# FTP帮助类,包含分块下载、断点续传和下载、删除文件、获取文件列表等功能
C# 完整代码开发,项目已经写好,上传下载支持断点续传。
c#FTP断点续传客户端 对文件进行删除 上传下载 重命名
FTP多线程上传下载、断点续传、分段下载--田景吉之C#版本
断点续传:点量Http/FTP有优秀的断点续传支持,每次启动自动从上次下载的位置开始,不需要重复下载。 提供详细的下载详情接口(2.0以后版本):可以看到整个下载过程的步骤,比如开启了多少线程、服务器的应答过程...
c#的ftpclient类,支持断点续传
基于FTP协议,能实现多线程断点续传功能。
c# FTP 断点续传, 多线程
实现FTP文件夹上传及断点续传,由于没有做文件夹勾选功能,所以要上传文件夹需要自己手动输入文件夹路径,也可以自己稍作修改。
点量Http/FTP下载组件(DLL)支持多线程、断点续传、显示详细下载过程、自动查找镜像网址、支持代理传输等完善的功能。 点量Http、FTP下载内核源码使用高效的c++代码编写,提供标准的动态链接库(DLL),可供C/C++、...
FTP 客户端 C# 图形界面 可以断点上传
C# Ftp 源代码(支持断点上传,断点下载)老外写的源代码,不过问题比较多主要是兼容性和健壮性不好。我修改了几个bug。希望对大家有用
c#如何操作ftp,如何建立连接,上传、下载文件等等内容
本例是实现多线程断点续传的功能,将下载好的位置记录在数据库中,线程数由自己控制,保证可以直接运行使用。