獲取文件路徑的代碼
File path = null;
try {
path = new File(ResourceUtils.getURL("classpath:").getPath());
} catch (Exception e) {
e.printStackTrace();
}
本地調試運行均沒有任何問題,打成jar包後部署到服務器上報錯FileNotFoundException
使用絕對路徑或者使用ResourceUtils.getFile等方式均同樣出現以上問題
錯誤原因:
ResouceUtils.getFile()是專門用來加載非壓縮文件類型的資源的,所以它根本不會去讀取jar包中的資源,本地之所以沒事是因爲本地訪問的不是jar而是直接編譯的
解決方法:
要想讀取jar包中的文件,只能通過流來進行讀取,可以使用new ClassPathResource(filepath)
代碼如下
ClassPathResource resource = new ClassPathResource("");
// 獲取文件路徑
String path = resource.getURL().getPath();
// 獲取文件名稱
filename = resource.getFilename();
// 獲取文件流
InputStream inputStream = resource.getInputStream();
打成jar包後,可成功正常運行