最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解讀classpath讀取resources目錄下的文件

 更新時間:2023年01月12日 14:14:08   作者:人工智  
這篇文章主要介紹了解讀classpath讀取resources目錄下的文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

classpath讀取resources目錄下文件

最近在springboot+maven的項目中去讀取資源文件的時候,報了找不到文件的錯誤。

由此展開了對maven項目編譯前和編譯后的目錄結構的了解,以及對java的classpath的理解。

首先:

由Maven構建的web工程,java代碼放在src/main/java路徑下,資源(配置文件等)放在src/main/resources路徑下,當構建jar包 或 war包時,JVM虛擬機會自動編譯java文件為class文件存放在 target/classes目錄下,resource資源下的文件會原封不動的拷貝一份到 target/classes 目錄下:而我們一般取的classpath就是target/classes目錄

你可以通過這種方式打印你的calsspath

A.class.getClassLoader().getResource("").getPath();

這里又引出一個話題,我們可以根據(jù)兩種不同的方式去獲取Resources下的文件

1、class.getResource()

import org.junit.jupiter.api.Test;
 
public class ResourceTestDemo {
 
    @Test
    void getResourceTest(){
        System.out.println(ResourceTestDemo.class.getResource(""));
        System.out.println(ResourceTestDemo.class.getResource("/"));
       }

打印結果:

1、file:/Users/username/Documents/TestDev/MyTraining/XUnit/ResourceTest/target/classes/3.txt
2、file:/Users/username/Documents/TestDev/MyTraining/XUnit/ResourceTest/target/classes/test/2.txt

結果分析:

  • 1、getResource("")不帶"/“時候是從當前類所在包路徑去獲取資源
  • 2、getResource("/")帶”/"時候是從classpath的根路徑獲取

2、getClassLoader().getResource()

@Test
 void getClassLoaderResourceTest(){
     System.out.println(ResourceTestDemo.class.getClassLoader().getResource(""));
     System.out.println(ResourceTestDemo.class.getClassLoader().getResource("/"));
 }

打印結果:

file:/Users/qinzhen/Documents/TestDev/MyTraining/XUnit/ResourceTest/target/test-classes/
null

  • class.getResource()不帶"/"時候是從當前類所在包路徑去獲取資源
  • class.getResource()帶"/"時候是從classpath的根路徑獲取
  • class.getResource()本質(zhì)上也是調(diào)用了getClassLoader,只是封裝了一層方便了我們使用而已
  • getClassLoader().getResource("")不帶"/"時候是從classpath的根路徑獲取
  • getClassLoader().getResource("/")路徑中無法帶有"/"
  • getResourceAsStream() 方法僅僅是獲取對應路徑文件的輸入流,在路徑的用法上與getResource()一qu

4、批量讀取

如果想要批量讀區(qū)resource下的文件呢?

Resource[] resources = ResourceTestDemo.class.getClassLoader().getResources("validator-config/*.xml");
for (int i = 0; i < resources.length; i++) {
    InputStream inputStream = resources[i].getInputStream();
    String xmlContent = IOUtils.toString(inputStream, "UTF-8");
    System.out.println("content" + i + "=" + xmlContent);
}
 

5、如果配置文件中要引用這個文件的路徑呢?

用classpath:xxx.xml 就可以了(xxx.xml放在resources目錄下)。注意是springboot的項目

如果還是取不到,看看你的maven工程的pom文件是否做了過濾文件,比如.keystore文件

 <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>*.keystore</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <includes>
                <include>*.keystore</include>
            </includes>
        </resource>
    </resources>
</build>

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • maven多moudle項目在idea里面顯示多個root問題及解決

    maven多moudle項目在idea里面顯示多個root問題及解決

    這篇文章主要介紹了maven多moudle項目在idea里面顯示多個root問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • IDEA中配置文件模板的添加方法

    IDEA中配置文件模板的添加方法

    這篇文章主要介紹了IDEA中配置文件模板的添加方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 使用mvn?deploy命令上傳jar包的實現(xiàn)

    使用mvn?deploy命令上傳jar包的實現(xiàn)

    本文介紹了使用mvndeploy:deploy-file命令將本地倉庫中的JAR包重新發(fā)布到Maven私服,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • java?百度手寫文字識別接口配置代碼

    java?百度手寫文字識別接口配置代碼

    本文通過實例代碼給大家介紹了java?百度手寫文字識別接口配置方法,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-01-01
  • Java Ribbon負載均衡詳細講解

    Java Ribbon負載均衡詳細講解

    Ribbon其實就是一個軟負載均衡的客戶端組件,他可以和其他所需請求的客戶端結合使用,這篇文章主要介紹了Ribbon負載均衡服務調(diào)用案例代碼,需要的朋友可以參考下
    2023-01-01
  • 詳解Java中的流程控制

    詳解Java中的流程控制

    今天帶大家復習Java基礎知識,文中對Java流程控制作了非常詳細的介紹及代碼示例,對正在學習Java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java OOM 異常場景與排查過程(堆、棧、方法區(qū))

    Java OOM 異常場景與排查過程(堆、棧、方法區(qū))

    這篇文章主要介紹了Java OOM 異常場景與排查過程(堆、棧、方法區(qū)),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • @ComponentScan注解用法之包路徑占位符解析

    @ComponentScan注解用法之包路徑占位符解析

    這篇文章主要介紹了@ComponentScan注解用法之包路徑占位符解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 帶你入門Java的數(shù)組

    帶你入門Java的數(shù)組

    這篇文章主要給大家介紹了關于Java中數(shù)組的定義和使用的相關資料,,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • java如何用遞歸生成樹形結構

    java如何用遞歸生成樹形結構

    作者分享了自己在使用腳本之家資源進行編程時的經(jīng)驗,包括準備實體對象、測試數(shù)據(jù)、構造樹形結構遞歸函數(shù)、測試以及輸出結果等步驟,作者希望這些經(jīng)驗能對大家有所幫助,并鼓勵大家支持腳本之家
    2025-03-03

最新評論

通道| 泾川县| 监利县| 榕江县| 连云港市| 德昌县| 阳西县| 绥棱县| 平阳县| 苍溪县| 克什克腾旗| 嵩明县| 尚志市| 托克逊县| 霍邱县| 桂林市| 鞍山市| 云安县| 吉木乃县| 万荣县| 光山县| 时尚| 陆川县| 呼图壁县| 桦川县| 临洮县| 囊谦县| 恭城| 平塘县| 千阳县| 辛集市| 南昌市| 宜城市| 成都市| 绥化市| 留坝县| 文成县| 宁陕县| 闵行区| 都江堰市| 岱山县|