list() 得到的文件名乱码,这个很好解决:
/**
* 字符编码转换:ISO-8859-1 => GBK
*
* @param str
* @return
* @throws UnsupportedEncodingException
*/
public static String iso2Gbk(String str)
throws UnsupportedEncodingException {
return new String(str.getBytes("ISO-8859-1"), "GBK");
}
遇到某中文目录时会无法进入,这个问题困扰我好几天(这几天一直在摆弄这个)。
发现服务端接收到的中文目录名都成乱码了,一开始我以为通过 new String() 的方式也可以解决。
其实不然,怎么试都不行,好象在 sun.net.ftp.FtpClient 里面会自动转换成 ISO 的编码。
今天偶然有机会看到 sun.net.ftp.FtpClient 的源码才发现果然如此。
sun.net.ftp.FtpClient 有个超类 sun.net.NetworkClient 在里面会将所有传输出去的编码都转换成 ISO 的。看来问题出在这里了。
同时 sun.net.NetworkClient 还有个:
/* Name of encoding to use for output */
protected static String encoding;
这个可以控制其编码,于是乎:
/**
* 设置连接编码
*
* @param encodingStr
*/
public static void setEncoding(String encodingStr) {
sun.net.NetworkClient .encoding = encodingStr;
}
将编码设置成 GBK 问题即解决。
我开始不知道sun.net.ftp源码在哪里可以下载,其实它就是jdk里面的,而我的安装jdk目录的源代码没有这部分,
后来去下了一个新的就有了,按照上面的思路,我想修改源代码,但是它是jar包,不能修改,我也没将它解压,
再去改,而知道encoding是protected,所以子孙类也可见,所以就用自己的ftpclient来替换ftpclient:
package my.sun.net.ftp;
import sun.net.ftp.FtpClient;
/**
* This class implements the FTP client.
*
* @author Jonathan Payne
*/
public class MyFtpClient extends FtpClient {
/**
* 设置连接编码
*
* @param encodingStr
*/
public static void setEncoding(String encodingStr) {
sun.net.NetworkClient .encoding = encodingStr;
}
}
后面使用MyFtpClient 来替换FtpClient 后就可以设置编码方式,
并且使用起来和FtpClient 一样。
分享到:
相关推荐
需要注意的是,`sun.net.ftp.FtpClient`在不同的Java版本中可能存在兼容性问题,且不推荐在生产环境中使用,因为它不是一个公开维护的API。 在批量操作中,无论是使用`Apache Commons Net`还是`sun.net.ftp....
org.apache.commons.net.ftp.FTPClient包,不错,在实际项目和产品中使用过。
在本文中,我们将深入探讨如何使用`org.apache.commons.net.ftp.FTPClient`包来实现简单的文件下载功能。这个过程涉及到几个关键步骤,包括连接到FTP服务器、登录、设置传输模式、下载文件以及断开连接。 首先,你...
sun.net.ftp.FtpClient,it.sauronsoftware.ftp4j.FTPClient,org.apache.commons.net.ftp.FTPClient三种不同的方式操作FTP
- **设置工作目录**:`FTPClient.changeWorkingDirectory(directory)`切换到FTP服务器的特定目录。 - **上传文件**:`FTPClient.storeFile remotePath, inputStream`将本地文件流上传到远程路径。 - **下载文件**:`...
FTP应用的jar包,主要用于java开发FTP上传下载
.net.ftp.FTPClient jar ,exaple, commons-net-2.0.jar
org.apache.commons.net.ftp.FTPClient FTP工具类,实现上传、下载、压缩到输出流下载等功能
com.enterprisedt.net.ftp.FTPClient类库的jar包 edtFTPj-1.5.3.jar
com.enterprisedt.net.ftp.FTPClient类库的jar包,可以用来实现对FTP服务器端的处理。
5. `System.Net.FtpClient`目录下的源码文件:包括`FtpClient.cs`、`IFtpClient.cs`、`FtpListItem.cs`、`FtpSocketStream.cs`以及`FtpEnums.cs`,这些文件定义了核心的FTP客户端类、接口、数据结构和枚举,构成了...
org.apache.commons.net.ftp的官方完整jar包 放心使用
在3.3版本中,`org.apache.commons.net.ftp.FTPClient`类是实现FTP通信的核心组件。这个类提供了一系列方法,允许开发者与FTP服务器进行交互,执行如上传、下载、删除文件、创建目录等操作。 FTPClient类的主要功能...
上传了收集的最新的 commons-io-2.4.jar 包 和 commons-net-3.3.jar 以及 FTP java调用例子。net 包是一个用于操作Internet基础协议(Finger,Whois,TFTP,Telnet,POP3,FTP,NNTP,以及SMTP)的底层API。Net包...
C#的FTP操作类库,支持FTP文件的上传,下载等等,封装好的可直接引用FtpClient; 如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用。 那就是System...
标题"org.apache.commons.net.ftp"表明这个压缩包包含了与Apache Commons Net库中FTP相关的类和功能。描述提到“所有jar包里边都有”,这意味着你将获得完整的FTP支持,包括所有必要的依赖。 Apache Commons Net库...
因为开发一个项目要用到FTP上传功能,用的是.NET平台,当时找了半天也没有关于FTP...找了很多资料,并参考了一下Java的sun.net.FtpClient类,总算可以拿出来用,所以就迫不及待的传上来给大家共享,相对性能方面还可以。
import org.apache.commons.net.ftp.FTPClient; FTPClient ftpClient = new FTPClient(); try { ftpClient.connect("ftp.server.com", 21); // 连接到FTP服务器 ftpClient.login("username", "password"); // ...