1. 程式人生 > >解決Linux中文名檔案下載找不到路徑(java.io.FileNotFoundException: ***(No such file or directory))

解決Linux中文名檔案下載找不到路徑(java.io.FileNotFoundException: ***(No such file or directory))

問題描述

以前寫過一個檔案上傳下載的專案,在本地測試沒有問題,但最近在部署到Linux伺服器實際應用發現,當檔名為中文時,會報java.io.FileNotFoundException: ***(No such file or directory的異常,檔案下載後是一個空檔案 在這裡插入圖片描述 查閱資料發現,專案本身沒有問題,問題出在本地主機(我的是Windows10)和Linux作業系統的編碼不同 具體的檔案上傳下載實現可以看我的另外一篇部落格,有原始碼 Java實現帶表單引數的檔案上傳、下載和檔案打包下載

工具

Linux圖形化工具為Xftp,Shell工具為Xshell IDE:IDEA

說明

我是通過Xftp直接將要下載的檔案上傳到指定的Linux檔案目錄

解決問題

1. 檢視檔名

這裡有一個坑,由於我是通過Xftp直接將要下載的檔案上傳到指定的Linux檔案目錄,所以在Xftp上看中文名檔案是正常的 在這裡插入圖片描述 再通過Xshell來看 在這裡插入圖片描述 這裡就可以看出問題了,在Shell工具裡中文名不能正常顯示,所以肯定找不到檔案 這時就需要將中文檔案用Linux的編碼格式進行編碼

2. 解決問題

2.1 檢查Linux是否安裝convmv工具
rpm -qa |grep convmv

在這裡插入圖片描述 如圖說明安裝的有,若沒有,使用如下命令進行安裝

yum -y install convmv
或
yum install convmv //此命令需要手動確認
2.2 轉換檔名格式
convmv -f gbk -t utf8 -r --notest +檔案路徑/檔名
eg:convmv -f gbk -t utf8 -r --notest /test/*.docx

由於中文名不能夠正常顯示,所以通過檔案字尾來指定要進行編碼的檔案 在這裡插入圖片描述 編碼完成,這時再看檔名 在這裡插入圖片描述 可以看到中文名已經能夠正常顯示了,這是檔案就能夠正常下載了 注意:雖然在Shell下正常顯示,但這時通過Xftp工具檢視中文名卻不能正常顯示了 在這裡插入圖片描述這應該是Xftp編碼顯示的問題,不過不影響專案的執行

總結

到此,Linux中文名檔案下載找不到路徑的問題就解決了,希望我的文章對你有所幫助