在SpringBoot下 本地運行獲取項目下的文件是沒問題的,在打包后獲取則找不到文件
原因:
在Spring Boot項目中,當嘗試訪問項目下的文件時,本地開發環境和打包后的運行環境可能會有所不同。在本地開發時,通常可以直接通過相對路徑或類路徑來訪問文件,因為文件就位于的項目目錄中。但是,項目打包成JAR或WAR文件并部署到服務器上時,這些文件的結構會發生變化,所以需要以不同的方式來訪問它們。
在Spring框架中,ResourcePatternResolver是一個接口,它允許你根據給定的模式來解析資源。PathMatchingResourcePatternResolver是這個接口的一個實現,它支持基于Ant樣式的路徑模式來查找資源。
當你創建一個PathMatchingResourcePatternResolver的實例時,你可以用它來解析項目內部或文件系統上的資源路徑。例如,你可以用它來查找類路徑(classpath)上的資源,或者查找文件系統上的資源。
上示例,說明如何使用PathMatchingResourcePatternResolver來加載類路徑上的資源:
//獲取容器資源解析器
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//獲取所有匹配的文件Resource[] resources = resolver.getResources(filePath); //文件路徑可以不寫到根目錄
if (resources.length > 0) { //大于0代表找到了相關文件//獲得文件流,因為在jar文件中,不能直接通過文件資源路徑拿到文件,但是可以在jar包中拿到文件流//讀取的文件流 todo 如果不確定是一個或者不是只需要第一個文件則可以遍歷獲取resources[0].getInputStream(); //拿到的文件流 這個時候就可以去使用他操作了哦
}
如上filePath 舉例:文件在resources.file.demo.txt 則filePath =file/demo.txt即可。