window與linux專案部署-linux下找不到檔案路徑
阿新 • • 發佈:2019-01-06
場景
專案在windows下訪問正常,linux下拋異常,找不到檔案。
分析
如果訪問的專案檔案是這樣的:abc/bcd/aa.jpg
,而系統中訪問檔案的路徑是:abc/Bcd/aa.jpg
,兩者的區別是二級目錄bcd
寫成了Bcd
。
如果在windows下開發的小夥伴們,是發現不了錯誤的,windows檔名大小寫不敏感,因此 按照 abc/Bcd/aa.jpg
依然能訪問到檔案,但是linux檔案目錄大小寫敏感,因此會找不到檔案。
解決
在平時的程式設計中,一定要嚴格的書寫。
還需要注意一點:linux
目錄分隔符是 /
,windows下是\
,因此有時在windows存到資料庫裡的檔案路徑搬到linux下就會不適用,需要在系統中做處理,從資料庫取出路徑後,要經過加工,程式碼如下:
/**
* 修正路徑,將 \\ 或 / 等替換為 File.separator
* @param path 待修正的路徑
* @return 修正後的路徑
*/
public static String path(String path){
String p = StringUtils.replace(path, "\\", "/");
p = StringUtils.join(StringUtils.split(p, "/"), "/");
if (!StringUtils.startsWithAny(p, "/" ) && StringUtils.startsWithAny(path, "\\", "/")){
p += "/";
}
if (!StringUtils.endsWithAny(p, "/") && StringUtils.endsWithAny(path, "\\", "/")){
p = p + "/";
}
if (path != null && path.startsWith("/")){
p = "/" + p; // linux下路徑
}
return p;
}