问题描述
- ftp方式下载,文件名包含??导致下载的文件为空
- 使用FTPClient类下载ftp文件,ftp服务器上的文件名fileName包含??字符,如 ftp_扫描[托管系统(??...]_2015-04-14_16-42-20.xml
调试代码,发现程序读取的文件名为 ftp_扫描[托管系统(??...]_2015-04-14_16-42-20.xml。
登录ftp方法:
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding(""utf-8"");
ftpClient.enterLocalActiveMode();
ftpClient.connect(ipAddress ipPort);
ftpClient.login(userName passWord);
下载文件的方法。
/**
* download
* 从ftp下载文件到本地
* @param fileName 服务器上的文件名
* @param path 服务器上的文件夹路径
* @param srcFile 本地存储路径
*/
public void download(String fileName String path String srcFile) {
FileOutputStream fos = null;
try {
String dstFileName = path + ""/"" + fileName;
fos = new FileOutputStream(srcFile);
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.retrieveFile(dstFileName fos);
fos.close();
} catch (IOException e) {
logger.error(e.getMessage() e);
} finally{
if(fos != null){
try {
fos.close();
} catch (IOException e) {
logger.error(e.getMessage() e);
}
}
}
}
调试时读取ftp文件的名字如图:
实际ftp路径下文件名如图:
上传后文件为空如图:
Encoding格式GBK、uft-8都试了,FileType试了BINARY_FILE_TYPE和ASCII_FILE_TYPE都不行。
请问这种??怎么处理?
解决方案
应该是上传的时候用GBK编码了
时间: 2024-07-28 21:01:49