java普通項目讀取不到resources目錄下資源文件的解決辦法
現(xiàn)象如下:

可以看到resources目錄已經(jīng)在idea中標記成了資源目錄resources root,而且target/classes目錄下也編譯出了resources目錄下的pci.properties文件,換句話說:java在編譯時是讀取到了resources下的文件的。
可是為什么new File以后做路徑判斷時為什么返回false,找不到文件呢?
這里需要了解java讀取文件的機制:
java讀取文件的兩種方法:java.io和java.lang.ClassLoader
也就是一個是用java.io,另一個是用類加載器讀取文件
使用java.io(File類就是基于此)默認定位到當前用戶目錄("user.dir")下, 而不是classpath!:
關于這一點:可以通過System.getProperty("user.dir")) 驗證:

從上面的代碼可以看到System.getProperty("user.dir"))和new File("") 返回的路徑是一樣的:
都是工程目錄的工作路徑,這一點從idea的配置也可以看到:

所以如果要讀取classPath下的文件,一定不要不要使用File類!
此時應該使用類加載器來讀取classpath下文件。
idea環(huán)境下,默認的classPath是target/classes
資源目錄resouces下(是src/main/resources目錄,且標記成了Resources Root)的文件在編譯時都會自動復制到classpath下。
所以可以通過類加載器按照如下的方式讀取資源目錄下的文件:
${ClassLoader}.getResource("/${path}")
或者
${ClassLoader}.getResourceAsStream("/${path}")classLoader可以通過類名.class的方式來獲取
需要注意的是:getResource括號里面如果留空,則是從實際編譯的路徑去查找而不是classpath, 比如:

因為上面的是單元測試,此時getResource留空,則從target/test-classes開始查找
getResource括號里面如果從斜杠"/"開頭,則從classpath開始查找(也就是target/class)
總結(jié)
到此這篇關于java普通項目讀取不到resouces目錄下資源文件的解決辦法的文章就介紹到這了,更多相關java讀取不到resouces資源文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot整合easyExcel實現(xiàn)CSV格式文件的導入導出
這篇文章主要為大家詳細介紹了SpringBoot整合easyExcel實現(xiàn)CSV格式文件的導入導出,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以參考下2024-02-02
SpringBoot整合Liquibase實現(xiàn)對數(shù)據(jù)庫管理和遷移
Liquibase是一個用于用于跟蹤、管理和應用數(shù)據(jù)庫變化的開源工具,通過日志文件(changelog)的形式記錄數(shù)據(jù)庫的變更(changeset),然后執(zhí)行日志文件中的修改,將數(shù)據(jù)庫更新或回滾(rollback)到一致的狀態(tài),本文主要介紹SpringBoot與Liquibase的集成,需要的朋友可以參考下2024-11-11
Apache?Commons?Imaging處理圖像實例深究
這篇文章主要為大家介紹了Apache?Commons?Imaging處理圖像的實例探索深究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
使用SpringBoot開發(fā)Restful服務實現(xiàn)增刪改查功能
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。這篇文章主要介紹了基于SpringBoot開發(fā)一個Restful服務,實現(xiàn)增刪改查功能,需要的朋友可以參考下2018-01-01
Spring Boot全局異常處理機制中DispatcherServlet的處理流程和作用
本文深入解析Spring Boot全局異常處理機制,重點剖析DispatcherServlet的核心作用及其異常處理流程,詳細介紹了HandlerExceptionResolver接口及其三個默認實現(xiàn)類的執(zhí)行順序和工作原理,通過源碼分析,展示了Spring MVC如何將異常轉(zhuǎn)換為響應2026-01-01
SpringBoot常用注解,thymeleaf,數(shù)據(jù)提交的實現(xiàn)
SpringBoot簡化了微服務配置,提供快速啟動和內(nèi)嵌容器化web項目,常用注解包括@Component、@RestController等,Thymeleaf為前端頁面渲染提供支持,數(shù)據(jù)提交時需使用@RequestBody注解2026-01-01
spring?boot?redis中的key失效監(jiān)聽的問題解決
本文主要介紹了spring?boot?redis中的key失效監(jiān)聽的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-07-07

