需要注意事项,如果以下代码出现乱码问题,可以设置其中的Encoding属性就可以。

用法示例:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.FtpClient;
using System.Net; namespace AutoGathor.ConsoleUI
{
class Program
{
public static void Main(string[] args)
{
OMCInfo omc = new OMCInfo()
{
Id = Guid.NewGuid(),
DataType = AutoGathor.DataType.MR,
Name = "",
Port = ,
Root = "/",
IP = "172.21.3.41",
Domain = "catt",
UserName = "username",
Password = "password"
}; GathorTaskInfo task = new GathorTaskInfo()
{
OMC = omc,
Id = Guid.NewGuid(),
OMCId = omc.Id,
SavePath = "",
SourcePath = @"/2016-02-25",
StartTime = DateTime.Now,
Status = TaskStatus.DOING
}; using (FtpClient conn = new FtpClient())
{
conn.Host = task.OMC.IP;
conn.Credentials = new NetworkCredential(task.OMC.UserName, task.OMC.Password, task.OMC.Domain); foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(), FtpListOption.Modify | FtpListOption.Size))
{
switch (item.Type)
{
case FtpFileSystemObjectType.Directory:
Console.WriteLine(item.Input); foreach (FtpListItem _item in conn.GetListing(item.FullName, FtpListOption.Modify | FtpListOption.Size))
{
switch (_item.Type)
{
case FtpFileSystemObjectType.Directory:
Console.WriteLine(_item.Input); foreach (FtpListItem __item in conn.GetListing(_item.FullName, FtpListOption.Modify | FtpListOption.Size))
{
switch (__item.Type)
{
case FtpFileSystemObjectType.Directory:
Console.WriteLine(__item.Input);
break;
case FtpFileSystemObjectType.File:
Console.WriteLine(__item.Input);
break;
}
}
break;
case FtpFileSystemObjectType.File:
Console.WriteLine(_item.Input);
break; }
} break;
case FtpFileSystemObjectType.File:
Console.WriteLine(item.Input);
break; }
}
} Console.ReadKey();
}
}
}

不过上边的代码,在获取一个目录下具有几十万个文件的情况下,返回该目录下的文件列表信息,效率非常低,经过优化修改源码才能解决该问题;

而且,在使用正则匹配文件目录的地方,要使用四种已经提供的正则方式去配置文件名称,文件类型(文件、目录),修改时间等信息,如果可以把不同目录的结构统计好,配置为可选的方式,效率会更高。

该方案采用了socket安全线程下载文件方式,OpenStream函数中会克隆出一个新的tcp连接,很容易达到ftp服务器允许最大连接数,这是一个隐患。

  • 另外一个开源ftp类库: http://ftplib.codeplex.com/

该类型库是使用wininet.dll kernel32.dll来开发的一个类库,可以说性能极高,但是很容易出现中文乱码问题,该文件只需要把获取到的文件名称进行相应的转码就可以解决。

不错的开源FTP类库的更多相关文章

  1. JAVA 中不错的开源FTP组件:commons-net

    第一步:引入jar到pom.xml. <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dep ...

  2. [转]非常实用的15款开源PHP类库

    源文件:http://www.csdn.net/article/2013-10-09/2817123-PHP-Libraries 英文原文:https://codegeekz.com/useful-p ...

  3. 15款开源PHP类库

    PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程.这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互.此外,开发者使用这些类库还可以简 ...

  4. 非常实用的15款开源PHP类库

    PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程.这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互.此外,开发者使用这些类库还可以简 ...

  5. PHP 支付类库, cURL开源HTTP类库

    未做任何测试 支付类库地址:http://doc.yurunsoft.com/PaySDK cURL开源HTTP类库地址:http://doc.yurunsoft.com/YurunHttp/1

  6. FTP工具FileZilla&WinSCP与FTP类库FluentFTP

    FileZilla Filezilla分为client和server.其中FileZilla Server是Windows平台下一个小巧的第三方FTP服务器软件,系统资源也占用非常小,可以让你快速简单 ...

  7. 开源FTP软件FileZilla使用介绍

    简介 FileZilla是一个优秀的开源FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能,如果想自己搭建FTP服务器,FileZilla是一个好选择. 下载 FileZilla有一个中 ...

  8. 几个不错的开源的.net界面控件

    转自原文 几个不错的开源的.net界面控件 (转) 几个不错的开源的.net界面控件 - zt 介绍几个自己觉得不错的几个开源的.net界面控件,不知道是否有人介绍过. DockPanel Suite ...

  9. 使用开源免费类库在.net中操作Excel

    自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍. 主要找到以下类库: MyXls(http://sourceforge.net/proj ...

随机推荐

  1. 【Java】RuleSource约束常用方法整理

    1-常用约束规则RuleSource的设置方法   例如: addRules(new Rules(ProgramFeeItem.class){ protected void initRules() { ...

  2. 显式激活数据库( ACTIVATE DATABASE)

    某天值班员联系我说,我负责的一套报送系统没有按时生成报文,因为此报警提前量比较大,加上系统经常发生未按时生成报文的事件,也就是没在意,然后不急不慢的到公司,打开系统页面,发现其中一个存储过程跑了将近8 ...

  3. WZJ的blog开通了

    WZJ的blog开通了

  4. OSG+VS2010+win7环境搭建---OsgEarth编译

    OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 ...

  5. webdriver中定位元素,报无法找到元素的问题

    webdriver中定位元素,报无法找到元素的问题时,需要查看以下几点: 1 用火狐的firebug插件定位元素,确保这个元素的定位正确: 2 在火狐的firebug插件的,在html页签中输入fra ...

  6. 多种方式实现在Android 手机上抓包

    一.素材来源 https://www.zhihu.com/question/20467503 二.方法整理 2.1 方式1:Packet Capture + HTTP Injector 使用于在手机端 ...

  7. awesome-scala

    https://github.com/lauris/awesome-scala Awesome Scala  A community driven list of useful Scala libra ...

  8. php继承后构造函数的特性

    在5.x版本的php中: 如果父类有构造函数,它的子类也有构造函数,那么在运行子类时就“不会执行父类的构造函数”. 要想执行父类的构造函数,需要在子类的构造函数中加上: parent::__const ...

  9. 关于web api 2 客户端请求Post

    (一).客户端的部分代码[需要添加NuGet程序包] 附:Client 声明方法 HttpClient client = new HttpClient(); client.BaseAddress = ...

  10. Hibernate HQL的update方法详解

    虽然hibernate提供了许多方法对数据库进行更新,但是这的确不能满足开发需要.现在讲解一下用hql语句对数据进行更新. 不使用参数绑定格式String hql="update User ...