不错的开源FTP类库
- socket开源ftp类库代码:http://netftp.codeplex.com/
需要注意事项,如果以下代码出现乱码问题,可以设置其中的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类库的更多相关文章
- JAVA 中不错的开源FTP组件:commons-net
第一步:引入jar到pom.xml. <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <dep ...
- [转]非常实用的15款开源PHP类库
源文件:http://www.csdn.net/article/2013-10-09/2817123-PHP-Libraries 英文原文:https://codegeekz.com/useful-p ...
- 15款开源PHP类库
PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程.这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互.此外,开发者使用这些类库还可以简 ...
- 非常实用的15款开源PHP类库
PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程.这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互.此外,开发者使用这些类库还可以简 ...
- PHP 支付类库, cURL开源HTTP类库
未做任何测试 支付类库地址:http://doc.yurunsoft.com/PaySDK cURL开源HTTP类库地址:http://doc.yurunsoft.com/YurunHttp/1
- FTP工具FileZilla&WinSCP与FTP类库FluentFTP
FileZilla Filezilla分为client和server.其中FileZilla Server是Windows平台下一个小巧的第三方FTP服务器软件,系统资源也占用非常小,可以让你快速简单 ...
- 开源FTP软件FileZilla使用介绍
简介 FileZilla是一个优秀的开源FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能,如果想自己搭建FTP服务器,FileZilla是一个好选择. 下载 FileZilla有一个中 ...
- 几个不错的开源的.net界面控件
转自原文 几个不错的开源的.net界面控件 (转) 几个不错的开源的.net界面控件 - zt 介绍几个自己觉得不错的几个开源的.net界面控件,不知道是否有人介绍过. DockPanel Suite ...
- 使用开源免费类库在.net中操作Excel
自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍. 主要找到以下类库: MyXls(http://sourceforge.net/proj ...
随机推荐
- NOIp 2013 #1 积木大赛 Label:有趣的模拟
题目描述 春春幼儿园举办了一年一度的“积木大赛”.今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi. 在搭建开始之前,没有任何积木(可以看成 ...
- 洛谷 P2661 信息传递 Label:并查集||强联通分量
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- scrollIntoView
DOM的滚动 DOM规范中并没有规定各浏览器需要实现怎样的滚动页面区域,各浏览器实现了相应的方法,可以使用不同的方式控制页面区域的滚动.这些方法作为HTMLElement类型的扩展存在,所以它能在所有 ...
- python 教程
教程 http://www.runoob.com/python/att-list-append.html 习题 http://blog.csdn.net/liuyuan_jq/article/deta ...
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
作者:唐老师,华清远见嵌入式学院讲师. 1. HAL的module与stub HAL(Hardware AbstractLayer)硬件抽象层是Google开发的Android系统里上层应用对底层硬件 ...
- 纪念逝去的岁月——C/C++字符串回文
判断字符串是否是回文: 1. 输入:hello world dlrow olleh 输出:1 2. 输入:nihao hello 输出:0 代码 #include <stdio.h> #i ...
- .net 设置导航的当前状态
1.静态地址共用母版页时,加当前页的状态(使用加参数的方法实现): a: main.Master为链接设参数 MenuId <li> <a <%=MenuId==?" ...
- Greenplum获取表结构
最近在折腾greenplum,遇到一个蛋疼的问题,那就是获取表结构,也就是建表语句.大家都知道在MySQL里面是非常easy的,show create table table_name 就搞定了,在g ...
- 字符串格式化命令 sprintf
原型 int sprintf( char *buffer, const char *format, [ argument] … ); 参数列表 buffer:char型指针,指向将要写入的字符串的缓冲 ...
- 打开网页自动弹出QQ对话框的实现办法
Ian今天偶然进入一个公司的企业网站,然后QQ聊天窗口这里马上就弹出与那个公司客服聊天的窗口.怀着好奇的心态,Ian分析了该公司的网站源码,发现了实现网页弹出qq对话框的原理与实现方法,相信此时此刻你 ...