1.storeFile返回false解决方法
(1)在ftp连接成功后,添加ftpClient.enterLocalPassiveMode();
(2)字符编码需要修改:ftpClient.storeFile(new String(filename.getBytes("UTF-8"),"iso-8859-1"), inputStream);
2.retrieveFile返回false解决方法
(1)同样,进入passivemode模式
(2)修改字符编码:ftp.retrieveFile(new String(ff.getName().getBytes("utf-8"),"iso-8859-1"), is);
3.不知道将要部署的ftp服务器可以接受的编码格式
可以按照如下操作,在本地设置一个变量,然后就可以设置需要的编码格式了,当然服务器端的编码是不能变的StandardCharsets.ISO_8859_1
//尝试开启ftp的utf-8编码,如果成功后面的编码都用utf-8
if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {
Constants.LOCAL_CHARSET = "UTF-8";
//笔者尝试设置此编码,发现出错,具体不清楚原因
// ftpClient.setControlEncoding(Constants.LOCAL_CHARSET);
}
//接下来就可以这么使用了
new String(remoteDownLoadPath.getBytes(Constants.LOCAL_CHARSET), Constants.SERVER_CHARSET)