- 浏览: 186667 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
heyajun945:
这个怎么用呢? LoggableStatement stmt ...
可以从PreparedStatement中提取Sql的类LoggableStatement -
wqf0713:
求答案..~~~~
eclipse3.4速度慢的问题 -
llyer110:
上位仁兄看似用友NC的
IE中指定使用自定义的JRE?? -
及缘南烗:
回帖支持
Swingworker的使用 -
vip:
网址:www.kpdus.com/jad.html
目前不能 ...
在Eclipse中使用Jad实现反编译
项目需要实现从某银行的ftp服务器上定时下载数据文件的模块.于是使用apache的commons-net包实现ftp服务器的链接
中间使用了commons的io和Oro包.Io包封装了一些使用的方法,eg:安全的关闭各种流.根据文件的长度得到文件的方便识别的大小(k,m.g).还有一些其它使用的方法,读者可以下载后自行研究..
commons-net包封装了一些常见的网络包:ftp,smtp,pop3等..本文使用了ftp包的功能. 代码如下:
java 代码
- import java.io.IOException;
- import java.io.OutputStream;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.IOUtils;
- import org.apache.commons.net.ftp.FTPClient;
- import org.apache.commons.net.ftp.FTPFile;
- /**
- * 使用commons的net包进行ftp链接.
- * 相关包:commons-net-1.4.1.jar ; commons-io-1.2.jar;jakarta-oro-2.0.8.jar测试通过.可以列出ftp上的文件
- * 通过把ftp服务器上的文件流连接到outSteam及可以把文件下载到本机的目录..限制如果目录为中文则需要处理.最好使用英文文件名
- * @author xzgf
- * email:
- *
- * @create 2007-2-11
- *
- */
- public class ListFtpFile {
- private FTPClient ftpClient = new FTPClient();
- private OutputStream outSteam = null;
- /**
- * ftp服务器地址
- */
- private String hostName = "127.0.0.1";
- /**
- * 登录名
- */
- private String userName = "1";
- /**
- * 登录密码
- */
- private String password = "1";
- /**
- * 需要访问的远程目录
- */
- private String remoteDir = "/ClientTest";
- /**
- * 登录方法
- *
- */
- private void login() {
- try {
- //链接到ftp服务器
- ftpClient.connect(hostName);
- System.out.println("连接到ftp服务器:" + hostName + " 成功..开始登录");
- //登录.用户名 密码
- ftpClient.login(userName, password);
- System.out.println("登录成功.");
- FTPFile[] remoteFiles = ftpClient.listFiles(remoteDir);
- System.out.println("目录" + remoteDir + "下的文件:");
- if(remoteFiles != null) {
- for(int i=0;i
- String name = remoteFiles[i].getName();
- long length = remoteFiles[i].getSize();
- String readableLength = FileUtils.byteCountToDisplaySize(length);
- System.out.println(name + ":\t\t" + readableLength);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- //使用IO包关闭流
- IOUtils.closeQuietly(outSteam);
- try {
- ftpClient.disconnect();
- } catch (IOException ioe) {
- ioe.printStackTrace();
- }
- }
- }
- public static void main(String[] args) {
- ListFtpFile listFtpfiles = new ListFtpFile();
- listFtpfiles.login();
- }
- }
寥寥几行实现了ftp服务器某个目录下的所有文件.当然本例中没有处理中文的问题,所以如果ftp上存在中文目录,则会出现乱码.
通过获得ftp的流,可以将文件下载到本地.配合正则表达式,可以实现从服务器上下载匹配规则的文件....
欢迎交流..
评论
10 楼
cuclh27
2007-04-11
有没有用apache的commons-net开发的ftp上传或者下载进度的代码啊,谢谢拉!!
9 楼
cuclh27
2007-04-09
有没有处理中文文件夹或者中文文件名的dd
8 楼
fujohnwang
2007-02-13
package org.darrenstudio.wrapper.ftp; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPReply; /** * A Wrapper Class to Commons Net's FTPClient to ease the ftp transfer process * so Jakarta Commons Net needed. * @author Darren.Wang * @since 1.0 (2005-06-13) */ public class FtpTemplate { private FTPClientConfig ftpClientConfig;// optional // private String server;// required private String username; // required private String password; // required // public FtpTemplate(String server,String user,String pwd) { this.server = server; this.username = user; this.password = pwd; } public void transfer(FtpTransferCallback callback) throws IOException { FTPClient ftp = new FTPClient(); try { if(this.getFtpClientConfig() != null) ftp.configure(this.getFtpClientConfig()); ftp.connect(server); // check whether the connection to server is confirmed int reply = ftp.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); throw new IOException("failed to connect to the FTP Server:"+server); } // login ftp.login(this.getUsername(),this.getPassword()); // do your ftp operations in call back method callback.doTransfer(ftp); // logout ftp.logout(); } finally { if(ftp.isConnected()) { ftp.disconnect(); } } } // Setters and getters public FTPClientConfig getFtpClientConfig() { return ftpClientConfig; } public void setFtpClientConfig(FTPClientConfig ftpClientConfig) { this.ftpClientConfig = ftpClientConfig; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getServer() { return server; } public void setServer(String server) { this.server = server; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
7 楼
eonhy
2007-02-13
这个办法不错
以前做过一个通过定时器访问SAMBA目录读取数据文件的实现
以前做过一个通过定时器访问SAMBA目录读取数据文件的实现
6 楼
neptune
2007-02-13
package org.uranus.tools.net.ftp;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;
import org.uranus.util.StringUtils;
/**
* 基于apache组织的commonNet开源组件实现ftp客户端<br>
* 本程序运行依赖于一个config成员变量属性,其是一个属性(Properties)对象<br>
* 系统要求这个config对象,必需有如下属性key:<br>
* server(ftp服务器ip地址或域名)<br>
* username(登录用户名)<br>
* password(登录密码)<br>
* 如下属性key是可选的:<br>
* systemKey(ftp服务器的操作系统key,如window)<br>
* serverLanguageCode(ftp服务器使用的语言,如zh)<br>
* <br>
* 本程序是线程安全,在每一个上传时都将创建ftp连接,上传结束后再关闭ftp连接<br>
*
* 例子:<br>
* InputStream localIn = new FileInputStream("c:\\计算机.txt");<br>
*
* java.util.Properties config = new Properties();<br>
* config.setProperty("server", "192.168.5.120");<br>
* config.setProperty("username", "upload");<br>
* config.setProperty("password", "upload");<br>
*
* FtpClientCommonNetImpl client = new FtpClientCommonNetImpl();<br>
* client.setConfig(config);<br>
* client.upload(localIn, "/aaa/计算机.txt", true);<br>
*
*
* @author zhangdb
*
*/
public class FtpClientCommonNetImpl implements IFtpClient {
// ftp配置
private Properties config;
/**
* 连接到ftp服务器
*
* @param server
* @param userName
* @param password
* @return
* @throws FtpException
*/
protected FTPClient connectFtpServer(String server, String userName,
String password) throws FtpException {
// 创建ftp客户端对象
FTPClient ftp = new FTPClient();
try {
ftp.configure(this.getFTPClientConfig());
// 连接ftp服务器
ftp.connect(server);
// 登录
ftp.login(userName, password);
// 返回值
int reply = ftp.getReplyCode();
if ((!FTPReply.isPositiveCompletion(reply))) {
ftp.disconnect();
throw new FtpException("登录ftp服务器失败,请检查server[" + server
+ "]、username[" + userName + "]、password[" + password
+ "]是否正确!");
}
return ftp;
} catch (Exception ex) {
throw new FtpException(ex);
}
}
/**
* 关闭连接
*
* @param ftp
*/
protected void disconnectFtpServer(FTPClient ftp) {
try {
ftp.logout();
ftp.disconnect();
} catch (Exception ex) {
throw new FtpException(ex);
}
}
/**
* 上传
*/
public void upload(InputStream localIn, String remoteFilePath)
throws FtpException {
String server = this.config.getProperty("server");
String userName = this.config.getProperty("username");
String password = this.config.getProperty("password");
FTPClient ftp = this.connectFtpServer(server, userName, password);
try {
boolean result = ftp.storeFile(this
.enCodingRemoteFilePath(remoteFilePath), localIn);
if (!result) {
throw new FtpException("文件上传失败!");
}
} catch (Exception ex) {
throw new FtpException(ex);
} finally {
this.disconnectFtpServer(ftp);
}
}
/**
* 上传结束以后关闭输入流
*
* @param localIn
* @param remoteFilePath
* @param afterUploadCloseInputStream
* @throws FtpException
*/
public void upload(InputStream localIn, String remoteFilePath,
boolean afterUploadCloseInputStream) throws FtpException {
try {
// 上传
this.upload(localIn, remoteFilePath);
} finally {
if (afterUploadCloseInputStream) {
if (localIn != null) {
try {
localIn.close();
} catch (Exception ex) {
throw new FtpException(ex);
}
}
}
}
}
/**
* 得到配置
*
* @return
*/
protected FTPClientConfig getFTPClientConfig() {
// 创建配置对象
FTPClientConfig conf = new FTPClientConfig(this.config.getProperty(
"systemKey", FTPClientConfig.SYST_NT));
conf.setServerLanguageCode(this.config.getProperty(
"serverLanguageCode", "zh"));
return conf;
}
/**
* 远程文件路径编码(上传到ftp上的文件路径)
*
* @param remoteFilePath
* @return
*/
protected String enCodingRemoteFilePath(String remoteFilePath) {
return StringUtils.gbkToIso8859EnCoding(remoteFilePath);
}
public Properties getConfig() {
return config;
}
public void setConfig(Properties config) {
this.config = config;
}
}
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;
import org.uranus.util.StringUtils;
/**
* 基于apache组织的commonNet开源组件实现ftp客户端<br>
* 本程序运行依赖于一个config成员变量属性,其是一个属性(Properties)对象<br>
* 系统要求这个config对象,必需有如下属性key:<br>
* server(ftp服务器ip地址或域名)<br>
* username(登录用户名)<br>
* password(登录密码)<br>
* 如下属性key是可选的:<br>
* systemKey(ftp服务器的操作系统key,如window)<br>
* serverLanguageCode(ftp服务器使用的语言,如zh)<br>
* <br>
* 本程序是线程安全,在每一个上传时都将创建ftp连接,上传结束后再关闭ftp连接<br>
*
* 例子:<br>
* InputStream localIn = new FileInputStream("c:\\计算机.txt");<br>
*
* java.util.Properties config = new Properties();<br>
* config.setProperty("server", "192.168.5.120");<br>
* config.setProperty("username", "upload");<br>
* config.setProperty("password", "upload");<br>
*
* FtpClientCommonNetImpl client = new FtpClientCommonNetImpl();<br>
* client.setConfig(config);<br>
* client.upload(localIn, "/aaa/计算机.txt", true);<br>
*
*
* @author zhangdb
*
*/
public class FtpClientCommonNetImpl implements IFtpClient {
// ftp配置
private Properties config;
/**
* 连接到ftp服务器
*
* @param server
* @param userName
* @param password
* @return
* @throws FtpException
*/
protected FTPClient connectFtpServer(String server, String userName,
String password) throws FtpException {
// 创建ftp客户端对象
FTPClient ftp = new FTPClient();
try {
ftp.configure(this.getFTPClientConfig());
// 连接ftp服务器
ftp.connect(server);
// 登录
ftp.login(userName, password);
// 返回值
int reply = ftp.getReplyCode();
if ((!FTPReply.isPositiveCompletion(reply))) {
ftp.disconnect();
throw new FtpException("登录ftp服务器失败,请检查server[" + server
+ "]、username[" + userName + "]、password[" + password
+ "]是否正确!");
}
return ftp;
} catch (Exception ex) {
throw new FtpException(ex);
}
}
/**
* 关闭连接
*
* @param ftp
*/
protected void disconnectFtpServer(FTPClient ftp) {
try {
ftp.logout();
ftp.disconnect();
} catch (Exception ex) {
throw new FtpException(ex);
}
}
/**
* 上传
*/
public void upload(InputStream localIn, String remoteFilePath)
throws FtpException {
String server = this.config.getProperty("server");
String userName = this.config.getProperty("username");
String password = this.config.getProperty("password");
FTPClient ftp = this.connectFtpServer(server, userName, password);
try {
boolean result = ftp.storeFile(this
.enCodingRemoteFilePath(remoteFilePath), localIn);
if (!result) {
throw new FtpException("文件上传失败!");
}
} catch (Exception ex) {
throw new FtpException(ex);
} finally {
this.disconnectFtpServer(ftp);
}
}
/**
* 上传结束以后关闭输入流
*
* @param localIn
* @param remoteFilePath
* @param afterUploadCloseInputStream
* @throws FtpException
*/
public void upload(InputStream localIn, String remoteFilePath,
boolean afterUploadCloseInputStream) throws FtpException {
try {
// 上传
this.upload(localIn, remoteFilePath);
} finally {
if (afterUploadCloseInputStream) {
if (localIn != null) {
try {
localIn.close();
} catch (Exception ex) {
throw new FtpException(ex);
}
}
}
}
}
/**
* 得到配置
*
* @return
*/
protected FTPClientConfig getFTPClientConfig() {
// 创建配置对象
FTPClientConfig conf = new FTPClientConfig(this.config.getProperty(
"systemKey", FTPClientConfig.SYST_NT));
conf.setServerLanguageCode(this.config.getProperty(
"serverLanguageCode", "zh"));
return conf;
}
/**
* 远程文件路径编码(上传到ftp上的文件路径)
*
* @param remoteFilePath
* @return
*/
protected String enCodingRemoteFilePath(String remoteFilePath) {
return StringUtils.gbkToIso8859EnCoding(remoteFilePath);
}
public Properties getConfig() {
return config;
}
public void setConfig(Properties config) {
this.config = config;
}
}
5 楼
inprise_lyj
2007-02-13
不错,收着。
4 楼
jamesby
2007-02-12
有没有上传功能,如果有,那文件共享又多了一种思路,通过FTP服务器实现文件共享,简单方便!
3 楼
jvincent
2007-02-12
连上服务器只是第一步,还需要定义一个job来定时执行.所以不能像楼上说的那样.
2 楼
caocao
2007-02-12
不错,apache的那些commons包很灵。
楼主有否考虑写ant的build.xml,让ant来搞定?
楼主有否考虑写ant的build.xml,让ant来搞定?
1 楼
zack
2007-02-12
不错不错,好东西。有空要仔细看一看的。
发表评论
-
Swingworker的使用
2008-11-12 11:01 1939Swingworker是一个方便使用线程的工具类,提供了多线程 ... -
AWT和Swing的绘制细节
2008-08-11 22:30 1511介绍AWT和Swing的底层绘制的细节...转自:http:/ ... -
买了一本Swing的书
2008-08-07 21:43 1357在书店买了一本<Java动画、图形和极富客户端效果开发& ... -
Google protobuf使用向导
2008-07-18 08:51 8715本向导讲解了如下内容: 1、在一个.proto文件中定义一个信 ... -
IE中指定使用自定义的JRE??
2007-11-16 09:49 8153Applet应用,客户端需要下载jre,假如应用使用的是jre ... -
解析Txt文件的过程
2007-11-05 17:24 5759解析Txt文件的过程 项目需要解析用逗号(,)分隔的文本文件 ... -
平台开发技术考虑
2007-10-16 15:49 58451.客户端设计 使用基于Applet的访问框架,客户端需要下 ... -
GWT出1.4版本了
2007-06-16 22:50 3697看了google开发日的演讲录像,得知gwt已经发布1.4版本 ... -
通过Spring进行远程服务访问
2007-03-01 17:05 5226最近在做一个项目开发框架.前台使用Applet,服务器端最先考 ... -
(转贴)Classpath和Codebase
2007-02-27 10:38 2751Classpath和Codebase 概要 ... -
Eclipse3.3Meh发布
2007-02-26 15:46 1836Eclipse3.3Meh发布,谁知道eh是什么意思啊? -
可以从PreparedStatement中提取Sql的类LoggableStatement
2007-02-15 09:16 4333本人只是根据原类稍作 ...
相关推荐
这个库在不同的版本中提供了各种功能的增强和优化,比如`commons-net-3.1.jar`, `commons-net-3.3.jar`, 和 `commons-net-3.6.jar`。下面将详细阐述这些版本中涉及的主要知识点: 1. **FTP(文件传输协议)支持**:...
JAVA连接FTP服务器,并上传/下载文件的,使用commons-net包实现ftp服务器的访问,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等..相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar
在这个"commons-net-3.3源码包"中,我们可以深入理解其实现细节,对其进行定制和扩展,这对于开发人员来说非常有用。下面我们将详细探讨此源码包中的关键知识点。 1. **FTP协议实现**: Commons Net库的核心功能之...
无论是在构建FTP服务器客户端、实现网络诊断工具,还是处理其他网络通信需求,Java Commons-Net都是一个强大且可靠的工具。通过阅读提供的`commons-net-3.3.jar`文件,开发者可以直接将该库导入项目中,开始利用其...
总结来说,"com.jcraft.jsch.jar"和"commons-net"是Java开发中处理网络通信特别是SSH和FTP任务的重要工具,而.NET平台也有类似的功能实现,为不同平台的开发者提供了丰富的网络通信解决方案。了解并熟练运用这些库,...
在FTP方面,commons-net提供了`FTPClient`类,这是一个功能强大的类,可以用于连接FTP服务器,执行上传、下载、删除文件,创建或删除目录等操作。例如,你可以使用`connect()`方法建立连接,`login()`方法进行身份...
在这个场景中,我们关注的是两个特定的Java库文件:`commons-net-1.4.1.jar` 和 `jakarta-oro-2.0.8.jar`,它们是实现FTP功能的关键组件。 `commons-net-1.4.1.jar` 是Apache Commons Net库的一个版本,这是一个...
通过使用FTPClient类,开发者可以方便地与FTP服务器进行交互,实现文件的高效传输。此外,FTPFile类则用于表示FTP服务器上的文件和目录信息,提供了丰富的属性和方法来获取文件的详细信息。 SMTP(简单邮件传输协议...
这个库,以"aduna-commons-net-2.1.jar.zip"的形式提供,包含了丰富的网络编程接口和实现,为开发者提供了强大的网络操作支持。 Aduna Commons Net是Apache软件基金会的一个项目,其核心目标是为Java开发者提供一组...
使用Apache Commons VFS的SFTP模块,开发者可以轻松地在代码中实现对远程SFTP服务器的文件操作,例如上传、下载、列出目录内容、重命名或删除文件等,而无需关心具体的文件系统细节。Apache Commons Logging则负责...
在使用`commons-net-3.3.jar`时,确保将其添加到项目的类路径或依赖管理中。如果你使用的是Maven或Gradle,可以将Apache Commons Net作为依赖添加到构建文件中,以便自动下载和管理库。 总的来说,Apache Commons ...
这个库的核心版本是`commons-net-1.4.1.jar`,它包含了丰富的类和方法,使得开发者能够方便地实现各种网络功能。 在`commons-net-1.4.1.jar`中,我们可以找到许多关键组件,包括: 1. **FTP(文件传输协议)**: 这...
`FileSystem`表示一个具体的文件系统,如本地文件系统或FTP服务器;`FileSystemManager`则是管理这些文件系统的工厂类,负责创建和配置文件系统。 2. **协议支持**:VFS的设计允许扩展以支持多种协议,如`file:`、`...
1. **FTP协议实现**:Apache Commons Net包含了一个完整的FTP客户端库,支持主动和被动模式,断点续传,FTP上传和下载,以及FTP服务器的命令交互。源码中`org.apache.commons.net.ftp`包下的类,如`FTP`、`FTPClient...
接着,`TelnetClient`类实现了Telnet协议,用于远程终端访问。源码中,它处理了诸如IAC(Inter-Active Command)这样的特殊字符,以实现不同终端环境下的字符编码和控制序列的处理。`TelnetOptionHandler`接口和相关...
`ant.license.txt`文件通常包含Apache软件基金会项目的许可证信息,它详细说明了如何使用、修改和分发`ant-commons-net-1.7.0.jar`的条款。Apache Commons Net遵循Apache License Version 2.0,这是一个非常宽松的...
例如,一个需要从FTP服务器下载大量文件的应用,可以通过Aduna Commons Net的FTP客户端轻松实现;又如,一个需要监控网络状态并找出开放端口的系统,可以利用其端口扫描功能。 总之,"aduna-commons-...
"apache-commons-net-3.0.1-src"是一个源代码版本,允许开发者深入理解其内部工作原理,并根据需要进行定制或扩展。 FTP(File Transfer Protocol)是互联网上最常用的文件传输协议之一,Apache Commons Net提供了...
通过`FTPClient`类,开发者可以方便地实现FTP交互,而`FTPFile`类则代表FTP服务器上的文件或目录信息。 **Telnet协议支持**: 对于需要与远程服务器进行Telnet通信的应用,Apache Commons Net提供了`TelnetClient`...
在Ant中,这个库被用来处理与网络相关的任务,例如上传或下载文件到FTP服务器,发送电子邮件,或者访问其他网络服务。 "ant-commons-net-1.6.2.jar"是这个库的特定版本,版本号1.6.2。这个JAR文件包含了所有必要的...