刚开始接触用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();
}
}
分享到:
相关推荐
java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载
包含最新版文档以及全部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-...
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 ...
包含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...
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-common-3.3.0.jar
commons-fileupload-1.3.3.jar和commons-io-2.6.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....
赠送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....
hadoop-common-2.7.2.jar
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....
kotlin-stdlib-common.jar
hadoop-common-2.4.1.jar,是学习基础的Hadoop必须的包
commons-fileupload-1.2.2.jar和commons-io.jar,用于java开发。
赠送jar包:netty-transport-native-unix-common-4.1.73.Final.jar; 赠送原API文档:netty-transport-native-unix-common-4.1.73.Final-javadoc.jar; 赠送源代码:netty-transport-native-unix-common-4.1.73....
lucene-analyzers-common-4.3.0.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-...
commons-pool2-2.3.jar commons-pool2.jar是一个十分常用的jar文件,commons-pool2.jar文件适用于java开发中的与连接池进行连接部分使用,如果您缺少这个jar文件马上下载commons-pool2.jar吧
jboss-common-client.jar