1. 程式人生 > >window與linux專案部署-linux下找不到檔案路徑

window與linux專案部署-linux下找不到檔案路徑

場景

  專案在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; }