刚开始接触用common-net.jar进行ftp开发,就遇到了上传下载文件损坏的问题,除了txt文件外,其他类型文件均损坏,且上传下载的文件比原始文件大。偶然间发现,如果调用了FTPClient.logout(),就解决了问题,但是在单一线程中下载多个文件却没有成功,还请高手指点迷津。代码如下:
package com.yct.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.io.Util;
import org.junit.Test;
public class FtpClientTry {
@Test
public void test() throws Exception{
FTPClient ftpClient = new FTPClient();
int len;
String filename;
InetAddress host = InetAddress.getByName("192.168.0.1");
ftpClient.connect(host, 2121);
ftpClient.login("admin", "admin");
//设置被动模式
ftpClient.enterLocalPassiveMode();
//设置以二进制方式传输
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
FTPFile[] ftpFiles = ftpClient.listFiles();
for(FTPFile file : ftpFiles){
System.out.println(ftpClient.getReplyCode());
if(file.getType() == FTPFile.FILE_TYPE){
String filename1 = file.getName();
filename = new String(filename1.getBytes("iso-8859-1"), "utf-8");
System.out.println(filename);
InputStream is = ftpClient.retrieveFileStream(filename1);
OutputStream local = new FileOutputStream("d:/"+filename);
Util.copyStream(is, local);
}
}
ftpClient.logout();//必须logout,否则文件损坏
ftpClient.disconnect();
}
}
分享到:
相关推荐
使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.list...下载本工具,彻底解决问题。 不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这个替换吧,世界从此安静了。。。
包含hadoop平台Java开发的所有所需jar包,例如activation-1.1.jar apacheds-i18n-2.0.0-M15.jar apacheds-kerberos-codec-2.0.0-M15.jar api-asn1-api-1.0.0-M20.jar api-util-1.0.0-M20.jar asm-3.2.jar avro-1.7.7...
hadoop-common-2.7.2.jar
hadoop-common-2.7.3.jar 下载
commons-collections-20040616.jar, commons-collections-3.2-osgi.jar, commons-collections-3.2-sources.jar, commons-collections-3.2.1.jar, commons-collections-3.2.2-javadoc.jar, commons-collections-3.2.2...
hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...
4. **使用 Commons IO**:在保存文件时,`Commons IO`库提供了方便的方法,如`Files.copy()`,可以用来将上传的文件流安全地写入目标文件。 5. **异常处理**:在处理过程中,要捕获并适当地处理可能出现的异常,如...
hadoop-common-3.3.0.jar
赠送jar包:netty-transport-native-unix-common-4.1.68.Final.jar; 赠送原API文档:netty-transport-native-unix-common-4.1.68.Final-javadoc.jar; 赠送源代码:netty-transport-native-unix-common-4.1.68....
kotlin-stdlib-common.jar
赠送jar包:netty-common-4.1.65.Final.jar; 赠送原API文档:netty-common-4.1.65.Final-javadoc.jar; 赠送源代码:netty-common-4.1.65.Final-sources.jar; 赠送Maven依赖信息文件:netty-common-4.1.65.Final....
在实际开发中,当你需要在Web应用中实现文件上传功能时,首先会配置`commons-fileupload-1.2.1.jar`来解析请求,然后利用`commons-io-1.4.jar`处理上传后的文件,比如保存到服务器的指定目录,或者进行一些预处理...
commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar jar 文件。 commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 案例上传: http://hi.baidu.com/lichao77821/blog commons-fileupload-1.2.1.jar和commons-...
赠送jar包:flink-table-common-1.12.7.jar; 赠送原API文档:flink-table-common-1.12.7-javadoc.jar; 赠送源代码:flink-table-common-1.12.7-sources.jar; 赠送Maven依赖信息文件:flink-table-common-1.12.7....
这个"最全的common-FileUpload.jar包"结合了两个关键的Apache Commons库,为开发者提供了强大的文件上传解决方案,无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和有效利用这些工具,可以极大地...
包含最新版文档以及全部jar包: jar包如下 netty-buffer-4.1.32.Final-sources.jar netty-buffer-4.1.32.Final.jar netty-build-22-sources.jar netty-build-22.jar netty-codec-4.1.32.Final-sources.jar netty-...
在Java Web开发中,文件的上传与下载是常见的功能需求,尤其在构建动态网站或Web应用程序时。本教程将深入讲解如何使用Java Servlet、Apache Commons IO库(版本2.4)以及Apache Commons FileUpload库(版本1.3)来...
hadoop-common-2.7.5.jar,可以直接使用,需要用的直接下载即可。
赠送jar包:netty-common-4.1.68.Final.jar; 赠送原API文档:netty-common-4.1.68.Final-javadoc.jar; 赠送源代码:netty-common-4.1.68.Final-sources.jar; 赠送Maven依赖信息文件:netty-common-4.1.68.Final....
在Java开发中,数据库连接管理是一项关键任务,而C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一种有效管理数据库连接的方式。在这个场景中,我们关注的是三个文件:"mchange-commons-java-0.2.12...