工作的時候需要讀取resource目錄下的檔案,在此記錄一種不會因打包方式影響的讀取方法(直接寫路徑有可能會因為打jar包或者打war包而失效)。
2021/01/11 更新
如果是在spring環境中,可以使用org.springframework.core.io.classpathresource,路徑就是resource的路徑
注意!!!打成jar包只能只能讀取流,不能getfile!!!
並且,在打成jar包時,使用classpathresource的getfile或者getpath之類的方式是不能獲得結果的,但是可以使用classpathresource.getinputstream直接讀取到(有點奇怪)
檔案放在db2convert
下
string jsonpath = "";
// 檔案不存在時,resource為null
url resource = this.getclass().getclassloader().getresource("db2convert/" + file_name);
jsonpath = urldecoder.decode(resource.getpath(),"utf-8");
path path = paths.get(jsonpath.contains(":") ? jsonpath.substring(1) : jsonpath);
然而我並沒有在linux上測試
需要注意的是class.getclassloader().getresource()
和class.getresource()
這裡使用的是類載入器的getresource()
方法。
具體的區別就是:
class.getclassloader().getresource()
直接從resources目錄下找,用的是相對路徑,檔名(引數)前面不用加/
;
class.getresource()
是以resources為根目錄的絕對路徑,檔名(引數)前面需要加/
。
如何用shell獲取linux目錄下的檔名呢?
遇到乙個很繁瑣的事情,有兩個目錄a b,兩個資料夾目錄裡有一些檔案的檔名是一樣,不過字尾名不同,我想把a資料夾下跟b資料夾裡相同檔名的檔案覆蓋到b去,並刪除b裡同名而不同字尾的檔案,檔案很多,我想用shell來試寫這樣乙個功能,不過本人剛接觸shell,還不清除怎麼用shell來獲取目錄下的檔名來進...
IDEA中讀取 resource目錄下檔案
讀取jar包中的檔案的情況下 url url loadcachefile.class.getclassloader getresource filepath getfile linux下的輸出 檔案路徑中多了兩個 導致找不到檔案而報錯 有時url中還可能出現多了乙個空格的問題 uri resourc...
android 讀取 res raw目錄下的檔案
1。獲取資源的輸入流 資源檔案 sample.txt 位於 project home res raw目錄下,可以在 activity 中通過 context.getresources openrawresource r.raw.sample 方法獲取輸入流。例子 從resources中的raw 資料...