- 浏览: 770086 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
corelengine:
好文,支持一下!
在 Spring Web Flow 项目中应用 Hessian 服务 -
corelengine:
感谢分享,不过你的工程太简单了,怎么可以导入eclipse
Spring Web Flow 2.0 入门 例子源码 -
chenrongtao2132:
melody404 写道请教博主一个问题
登录成功以后为什么老 ...
CAS 单点登录安装笔记4 -- asp.net client端的设置 -
chxiaowu:
从头到尾没发现 那里有 cxf bean配置啊。。。。
WebService开发笔记 3 -- 增强访问 WebService 的安全性 -
chxiaowu:
严重: StandardWrapper.Throwable
o ...
WebService开发笔记 3 -- 增强访问 WebService 的安全性
项目需要实现从某银行的ftp服务器上定时下载数据文件的模块.于是使用apache的commons-net包实现ftp服务器的链接
中间使用了commons的io和Oro包.Io包封装了一些使用的方法,eg:安全的关闭各种流.根据文件的长度得到文件的方便识别的大小(k,m.g).还有一些其它使用的方法,读者可以下载后自行研究..
commons-net包封装了一些常见的网络包:ftp,smtp,pop3等..本文使用了ftp包的功能. 代码如下:
java 代码
- 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;
- }
- }
发表评论
-
Android开发笔记
2009-10-19 09:11 16691.复制数据库文件: D:\Program Files\and ... -
天气预报的 WebService 服务网站
2009-06-29 10:53 0http://www.webxml.com.cn/WebSer ... -
在 Spring Web Flow 项目中应用 Hessian 服务
2009-05-21 11:19 2600原来作的一个项目因为页面跳转比较多,应用了S ... -
Spring Web Flow 2.0 入门 例子源码
2008-12-22 11:34 11817developerWorks 中有一篇教材讲解了 Spr ... -
JAD反编译工具
2008-05-29 11:33 5069This is README file for Jad - t ... -
压力测试与系统调优
2008-05-04 16:19 2348最近用loadrunne ... -
通过压力测试排查Bug(二)--排查Bug
2008-05-04 11:44 1848最近的一个项目 ... -
通过压力测试排查Bug(一)--测试过程
2008-05-04 11:05 1644最近的一个项目应用了Acegi作为安全框架,项目试运 ... -
WebService开发笔记 3 -- 增强访问 WebService 的安全性
2008-03-19 09:50 21877在WebService开发笔记 1中我们创建了一个WebSer ... -
WebService开发笔记 2 -- VS 2005 访问WebServcie更简单
2008-03-12 19:32 11206WebService开发笔记 2 -- VS 2005 访问W ... -
WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单
2008-03-12 18:37 27575WebService开发笔记 1 -- 利用cxf开发WebS ... -
Tomcat 配置 -- 打开中文文件名的附件
2008-03-04 10:23 1966设计了文件上传的工具,但在Tomcat服务器上访问中文文件名的 ... -
常用的System.getProperty()
2008-03-02 11:53 29常用的System.getProperty()System.g ... -
CAS 单点登录安装笔记4 -- asp.net client端的设置
2008-03-02 11:51 16528CAS 单点登录安装笔记4 --- asp.net clien ... -
CAS 单点登录安装笔记3 -- 与acegi集成
2008-02-28 23:38 8305CAS 单点登录安装笔记3 -- 与acegi集成 在我的项 ... -
CAS 单点登录安装笔记2 -- 配置CAS,访问自己的用户表
2008-02-27 17:45 7042CAS 单点登录安装笔记2 1.修改cas/webapp/ ... -
CAS 单点登录安装笔记1 -- 基本设置与数字证书的安装
2008-02-26 16:35 5737安装JA-SIG SSO系统笔记1 (关于配置访问数据库的用 ... -
JAVA文档
2007-12-19 16:05 1203JAVA相关文档 http://www.lybbs.net/n ... -
Tomcat性能调优(2)
2007-12-19 15:37 2936原文出处:http://www.lybbs.n ... -
Spring 通过 Tomcat 6.0 下的数据源连接池 访问Oracle数据库
2007-12-17 18:26 5997头疼的老问题,折腾了一天,tomcat6.0数据源配置 to ...
相关推荐
这个库在不同的版本中提供了各种功能的增强和优化,比如`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`文件,开发者可以直接将该库导入项目中,开始利用其...
在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库的一个版本,这是一个...
总结来说,"com.jcraft.jsch.jar"和"commons-net"是Java开发中处理网络通信特别是SSH和FTP任务的重要工具,而.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文件包含了所有必要的...