原来用的是sun.net.ftp.FtpClient jar包,在java project中能解决乱码问题,在java web项目中未找到解决方案
现在改用org.apache.commons.net.ftp.FTPClient jar包,可以正常下载
public boolean downFile(String fileName) {
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(ip, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(path);//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
// System.out.println(new String(fileName.getBytes("iso-8859-1"), "iso-8859-1")+"###");
for(FTPFile ff:fs){
String f= new String(ff.getName().getBytes("iso-8859-1"), "utf-8");
if(f.equals(fileName)){
File localFile = new File(disk+"/"+f);
OutputStream is = new FileOutputStream(localFile);
ftp.retrieveFile(ff.getName(), is);
is.close();
}
}
ftp.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return success;
}
原来用的sun.net.ftp.FtpClient jar包,java app项目没有乱码,java web项目乱码未找到解决方案
现在改为org.apache.commons.net.ftp.FTPClient jar包,文件名乱码问题已解决