java中獲取類(lèi)資源的方法總結(jié)
介紹兩種獲取資源的方式:
一、通過(guò)ClassLoader獲?。?/strong>
loader.getResourceAsStream("a/b/temp.txt");--獲取src下/a/b包下的temp.txt資源
二、通過(guò)Class獲?。?/strong>
加"/":
與ClassLoader一樣。class.getResourceAsStream("/a/b/temp.txt")
不加"/":
class.getResourceAsStream("temp.txt")。表示獲取當(dāng)前類(lèi)路徑下的資源。
舉個(gè)栗子:
【項(xiàng)目路徑如下】

【classes路徑如下】

【測(cè)試代碼】
package com.io.test;
import java.io.InputStream;
public class TestIo {
public static void main(String[] args) {
//一、通過(guò)ClassLoader方式
ClassLoader loader = TestIo.class.getClassLoader();//直接從跟路徑搜索
InputStream a1 = loader.getResourceAsStream("a.txt");
InputStream b1 = loader.getResourceAsStream("test/file/b.txt");
InputStream c1 = loader.getResourceAsStream("com/io/test/c.txt");
System.out.println("a1=>"+a1);
System.out.println("b1=>"+b1);
System.out.println("c1=>"+c1);
//二、通過(guò)Class方式
Class<TestIo> clazz = TestIo.class;
InputStream a2 = clazz.getResourceAsStream("/a.txt");//斜杠表示直接從根路徑開(kāi)始搜索
InputStream a3 = clazz.getResourceAsStream("../../../a.txt");//通過(guò)相對(duì)路徑
InputStream c2 = clazz.getResourceAsStream("c.txt");//當(dāng)前類(lèi)路勁,相對(duì)路徑
InputStream c3 = clazz.getResourceAsStream("/com/io/test/c.txt");//從跟路徑開(kāi)始搜索
System.out.println("a2=>"+a2);
System.out.println("a3=>"+a3);
System.out.println("c2=>"+c2);
System.out.println("c3=>"+c3);
}
}
a1=>java.io.BufferedInputStream@15db9742 b1=>java.io.BufferedInputStream@6d06d69c c1=>java.io.BufferedInputStream@7852e922 a2=>java.io.BufferedInputStream@4e25154f a3=>java.io.BufferedInputStream@70dea4e c2=>java.io.BufferedInputStream@5c647e05 c3=>java.io.BufferedInputStream@33909752
以上就是本次介紹的全部相關(guān)知識(shí)點(diǎn),如果大家有任何補(bǔ)充的地方可以聯(lián)系腳本之家小編。
相關(guān)文章
java實(shí)現(xiàn)excel導(dǎo)出合并單元格的步驟詳解
這篇文章主要介紹了java實(shí)現(xiàn)excel導(dǎo)出合并單元格,通過(guò)使用Apache POI庫(kù),我們可以方便地創(chuàng)建Excel文件、填充數(shù)據(jù)、合并單元格和導(dǎo)出Excel文件,需要的朋友可以參考下2023-04-04
Java Lambda表達(dá)式與匿名內(nèi)部類(lèi)的聯(lián)系和區(qū)別實(shí)例分析
這篇文章主要介紹了Java Lambda表達(dá)式與匿名內(nèi)部類(lèi)的聯(lián)系和區(qū)別,結(jié)合實(shí)例形式分析了Java Lambda表達(dá)式與匿名內(nèi)部類(lèi)功能、用法、區(qū)別及操作注意事項(xiàng),需要的朋友可以參考下2019-10-10
kafka?消息隊(duì)列中點(diǎn)對(duì)點(diǎn)與發(fā)布訂閱的區(qū)別說(shuō)明
這篇文章主要介紹了kafka?消息隊(duì)列中點(diǎn)對(duì)點(diǎn)與發(fā)布訂閱的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
java利用多線程和Socket實(shí)現(xiàn)猜拳游戲
這篇文章主要為大家詳細(xì)介紹了java利用多線程和Socket實(shí)現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
SpringBoot下使用自定義監(jiān)聽(tīng)事件的流程分析
事件機(jī)制是Spring的一個(gè)功能,目前我們使用了SpringBoot框架,所以記錄下事件機(jī)制在SpringBoot框架下的使用,同時(shí)實(shí)現(xiàn)異步處理,這篇文章主要介紹了SpringBoot下使用自定義監(jiān)聽(tīng)事件,需要的朋友可以參考下2023-08-08
SpringBoot實(shí)現(xiàn)統(tǒng)一功能處理的教程詳解
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何實(shí)現(xiàn)統(tǒng)一功能處理,文中的示例代碼講解詳細(xì),對(duì)大家學(xué)習(xí)或工作有一定借鑒價(jià)值,感興趣的同學(xué)可以參考閱讀下2023-05-05

