問題描述:
使用org.apache.commons.net.ftp.FTPClient刪除文件如果文件名帶有中文時,就會刪除失敗
如下圖有一箇中文文件名的文件在 home/lc 目錄下
刪除文件部分代碼:
調用刪除:
運行結果:
開始猜測是權限原因,於是用ftp工具嘗試刪除,發現可以刪除。
那就有問題了。
原因:
FTP協議裏面,規定文件名編碼爲iso-8859-1,所以目錄名或文件名包含中文需要轉碼。
解決方案:
將中文的目錄或文件名轉爲iso-8859-1編碼的字符。參考代碼:
boolean dele = ftp.deleteFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"));
然後就能刪除成功了