需要注意事项,如果以下代码出现乱码问题,可以设置其中的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. js正则表达式实例(汇总)

    来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢  如  30CAC0040 取出40  3SFASDF92 取出92  正则如下://d+$/g   统一空格个数  来源:正 ...

  2. Javascript与当前项目的思考

      主体 分为以下三部分,能力.经验有限,欢迎拍砖. 1.低效的代码 2.面向对象的重构重复利用代码 3.调试的经验总结 第一部分 日常中低效的代码 加载和运行 <html> <he ...

  3. iOS 自动布局小结

    1> sizeclasses 可以限制某个 storyboard 显示在什么样的屏幕上,如 当前 storyboard 在iPhone 的左斜右斜或 iPad上是否显示.. 2> Hug值 ...

  4. mysql 表字段不能使用type???

    type 字段 可能跟系统内置字段有冲突吧

  5. Highcharts用函数动态填充静态值

    这种方式适用于其他动态函数模式 series: [{ name: 'Random data', data: (function() { // generate an array of random d ...

  6. webservice的Axis2入门教程java版

    本文转自百度文库 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebServi ...

  7. QSpinBox 和 QSlider 联合使用方法

    在Qt中,有时候我们想要联合QSpinBox 和 QSlider,使得移动滑块,QSpinBox中的数据会变化,或者我们在QSpinBox中输入一个数值,响应的滑块也会变化,如下图所示:

  8. Java获取前天和后天的时间

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...

  9. db2数据库新手可能碰到的问题及详解(部分内容来自网络搜索)

    一.db2安装好之后出现乱码,菜单栏呈现方框状,此时选择菜单第五项,点击选择下拉菜单中的最后一项,打开选择标签卡的第三项(字体),如果是无衬线都改为有衬线,如果是有衬线改为无衬线.乱码即可解决(网上一 ...

  10. 关于Java擦除特性

    package thinkingInJava; /* * 模拟擦除 */ public class SimpleHolder { private Object obj ; public void se ...