在上传ftp时,如果远程ftp里已经有文件了,但是又不想续传(因为发现文件是文档时,做了修改后,续传时可能会导致文档出问题,比如删除文档后续部分),所以想把ftp里的文件给删除掉,但是一直报下面这个错误。
220 Microsoft FTP Service
USER test1
331 Password required for test1.
PASS 123
230 User logged in.
连接成功:192.168.3.17-21-test1-123
TYPE I
200 Type set to I.
CWD /download/fs/
250 CWD command successful.
SYST
215 Windows_NT
PASV
227 Entering Passive Mode (192,168,3,17,210,152).
LIST ????20120627.txt
125 Data connection already open; Transfer starting.
226 Transfer complete.
FtpConfig.getUploadUseFromBreak():N –这个是我自己打印的
DELE 修改20120627.txt
550-The filename, directory name, or volume label syntax is incorrect.
Win32 error: The filename, directory name, or volume label syntax is incorrect.
Error details: File system returned an error.
550 End
上传文件状态:Delete_Remote_Faild –这个是我自己打印的
经过在网上搜索都没有成功,
最后看报错了有中文乱码,就尝试改了其中的一段代码试试。
//boolean dsuccess=ftpClient.deleteFile(remoteFileName) 这里的路径应该是全路径 remote
System.out.println(remote+”—-remote”);
boolean dsuccess=ftpClient.deleteFile(new String(remote.getBytes(“gb2312″, “iso-8859-1″));
if (!dsuccess) {
System.out.println(“删除FTP文件失败,可能是路径编码错误了,现在路径编码转换”+gb2312);
return UploadStatus.Delete_Remote_Faild;
}else{
System.out.println(“删除ftp旧文件成功:”+remoteFileName);
}
如上,只是加了文件路径转码,这里改成gb2312才可以