本人在使用commons.net.ftp时遇到的问题,无法将中文文件夹下的文档列表读出来,在网上一搜,
才发现许多人提问都没有解决,故贴代码于此,方便路过者。
import java.io.IOException;
import org.apache.commons.net.ftp.*;
public class FtpMSWordScanner {
public static void main(String[] args) throws IOException {
FTPClient client = new FTPClient();
client.connect("202.202.68.189");
client.login("ftp", "du45456");
System.out.print("Connected to " + ".");
System.out.print(client.getReplyString());
//gb2312或gbk都可以的
client.setControlEncoding("GBK");// gb2312
//FTPFile [] files = client.listFiles("/Tools"); //郑大钢
//中文字符,先要转码即可
FTPFile [] files = client.listFiles(new String("郑大钢".getBytes("GBK"), "iso-8859-1")); //
System.out.println("number of files " + files.length);
for(int i =0; i<files.length; ++i){
System.out.println( files[i].getName());
if(files[i].isFile()){
System.out.println("is an file..........." + files[i].getName());
}
}
}
}
问题解决的关键在于下面两句代码:
client.setControlEncoding("GBK");// gb2312
FTPFile [] files = client.listFiles(new String("郑钢".getBytes("GBK"), "iso-8859-1")); // 洪明坚
注意: 首先得保证你的项目已经加上了 commons-net-ftp, 和jakarta-oro-2.0.8两个压缩包 , 没有jakarta-oro,
listFiles()会报错。 什么,哪里有下, GOOGLE/BAIDU一下吧,呵呵。