最近做ftp上传遇到问题,最终解决,现在分享给大家。
这里有四点:
1、将字符串转换成输入流
String s = "this is my test string 中国"; //将字符串转换成输入流 ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes());
2、设置编码
ftp.setControlEncoding("GBK");
3、设置为被动模式
ftp.enterLocalPassiveMode();
4、上传和下载文件名称编码,当文件名为中文时,上传下载可能需要编码
//上传文件名称 boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis);
最终测试代码如下:
package ftpTest; import java.io.ByteArrayInputStream; import java.io.IOException; import org.apache.commons.net.ftp.FTPClient; public class ApacheFtpTest { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String s = "this is my test string 中国"; //将字符串转换成输入流 ByteArrayInputStream fis = new ByteArrayInputStream(s.getBytes()); FTPClient ftp = new FTPClient(); //host,端口 ftp.connect("127.0.0.1", 21); //必须设置,上传非iisc文件,如果不设置默认是iisc码格式传输,导致文件坏死 ftp.setFileType(FTPClient.BINARY_FILE_TYPE); //如果遍历文件名乱码,请设置为GBK,或者你需要的编码 ftp.setControlEncoding("GBK"); //超时时间必须设置,方式长时间连接没响应 ftp.setControlKeepAliveReplyTimeout(15000); ftp.setConnectTimeout(15000); ftp.setControlKeepAliveTimeout(15000); //设置被动模式,在很多情况下由于防火墙等原因,主动模式不支持。 ftp.enterLocalPassiveMode(); //帐户密码 ftp.login("帐户", "密码"); System.out.println("login success"); //服务器路径 ftp.changeWorkingDirectory("/"); //上传文件名称 ftp.storeFile("test.txt", fis); //上传文件名称 //boolean fb = ftp.storeFile(new String("test中文.csv".getBytes("GBK"),"iso8859-1"), fis); ftp.logout(); } }
相关推荐
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手。我在项目开发的过程中主要用到了文件的上传功能,希望大家能学的一些东西
Java常用FTP 文件操作 说明 Apache FTPClient ftp4j jftp java中实现ftp 文件上传 文件下载
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
本项目使用org.apache.commons.net.ftp.FTPClient实现文件上传到ftp服务器,解决不能上传中文文件的问题。
最近做了一个JAVA FTP协议 APACHE包内,上传,下载,查看,删除文件和目录的东西,拿出来给不明白的同学分享一下,希望得到帮助。搭建好服务器后,运行代码实现相应功能。
//由于apache不支持中文语言环境,通过定制类解析中文日期类型 ftpClient.configure(new FTPClientConfig("com.zznode.tnms.ra.c11n.nj.resource.ftp.UnixFTPEntryParser")); FTPFile[] files = ftpClient.list...
解决了某些系统中,ftpClient.listFiles()返回值总是为空的问题。 使用方法如下: ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); ftpClient.configure... // 得到目录的相应文件列表
Apache FTPClient所需jar包
主要介绍了Java中FTPClient上传中文目录、中文文件名乱码问题解决方法,本文使用apache-commons-net工具包时遇到这个问题,解决方法很简单,需要的朋友可以参考下
org.apache.commons.net.ftp.FTPClient进行上传文件,功能强大 ,可实现文件的上传和下载
利用apache 的FTPClient技术进行ftp的上传下载,可以安装一个ftpserver在自己的机器上面来做测试。
java通过ftp三种方式 上传 下载文件: 1. 通过sun :sun.net.ftp.FtpClient 2. 通过apache:org.apache.commons.net.ftp.FTPClient 3. 通过edtftp: com.enterprisedt.net.ftp.FileTransferClient
解决FTPClient上传文件时文件被破坏问题 - janestone的专栏 - 博客频道 - CSDN.NET (2012年5月21日) 用apache的FTP实现断点续传 - janestone的专栏 - 博客频道 - CSDN.NET (2012年5月21日) java实现FTP多线程断点续...
最近在做ftp文件的上传与下载,基于此,整理了一下资料。本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的。。。
最近在做一个数据文件上传的功能,找很网上很多材料都是只能jdk6以下才支持发现都是jdk6以下才支持的,发现Apache下提供的FTPClient更好用,以下代码都是亲测成功的,文件夹中有两个java类以及用的的jar文件
在开发中,会遇到向FTP服务器上传文件的需求,首先要导入 commons-net-3.3.jar 然后利用api进行相关操作,具体功能如下: Ftp相关代码 import android.util.Log; import org.apache.commons.net.ftp.FTP; import org...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...