`
fanxing1989800
  • 浏览: 18910 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

初步解决common-net.jar开发ftp时上传文件损坏问题

阅读更多
刚开始接触用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包中ftp应用的几点问题

    使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.list...下载本工具,彻底解决问题。 不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这个替换吧,世界从此安静了。。。

    hadoop-2.10.0jar.zip

    包含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.2.jar

    hadoop-common-2.7.3.jar

    hadoop-common-2.7.3.jar 下载 

    commons-collections.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最新版本3.1.1全量jar包

    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 ...

    commons-fileupload-1.3.3.jar和commons-io-2.6.jar

    4. **使用 Commons IO**:在保存文件时,`Commons IO`库提供了方便的方法,如`Files.copy()`,可以用来将上传的文件流安全地写入目标文件。 5. **异常处理**:在处理过程中,要捕获并适当地处理可能出现的异常,如...

    hadoop-common-3.3.0.jar

    hadoop-common-3.3.0.jar

    netty-transport-native-unix-common-4.1.68.Final-API文档-中文版.zip

    赠送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

    kotlin-stdlib-common.jar

    netty-common-4.1.65.Final-API文档-中英对照版.zip

    赠送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....

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    在实际开发中,当你需要在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 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-...

    flink-table-common-1.12.7-API文档-中文版.zip

    赠送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包

    这个"最全的common-FileUpload.jar包"结合了两个关键的Apache Commons库,为开发者提供了强大的文件上传解决方案,无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和有效利用这些工具,可以极大地...

    netty-all-4.1.32.Final-sources.jar 最新版netty源码全部包

    包含最新版文档以及全部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+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    在Java Web开发中,文件的上传与下载是常见的功能需求,尤其在构建动态网站或Web应用程序时。本教程将深入讲解如何使用Java Servlet、Apache Commons IO库(版本2.4)以及Apache Commons FileUpload库(版本1.3)来...

    hadoop-common-2.7.5.jar

    hadoop-common-2.7.5.jar,可以直接使用,需要用的直接下载即可。

    netty-common-4.1.68.Final-API文档-中文版.zip

    赠送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....

    mchange-commons-java-0.2.12.jar+c3p0-0.9.5.2.jar+c3p0-config.xml

    在Java开发中,数据库连接管理是一项关键任务,而C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一种有效管理数据库连接的方式。在这个场景中,我们关注的是三个文件:"mchange-commons-java-0.2.12...

Global site tag (gtag.js) - Google Analytics