3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
假設(shè)您實(shí)際上想要讀取文件而不是嘗試使用類加載器來尋址資源:
InputStream in = getClass().getResourceAsStream("/testfile/test1.txt");
BufferedReader reader = new BufferedReader( new InputStreamReader( in ) );
String line = null;
while( (line = reader.readLine() ) != null )
System.out.println("Line: " + line);
這對(duì)我有用

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
您無法將 jar 內(nèi)的資源讀取為 java.io.File,正如 @Shailesh 共享的鏈接中所述
InputStream is = this.getClass().getClassLoader().getResourceAsStream("classpath:testfile/test1.txt"))
將文件作為輸入流讀取,然后可以將其轉(zhuǎn)換為 String,然后根據(jù)需要將其轉(zhuǎn)換為類。

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
'this.getClass().getClassLoader().getResourceAsStream()' 是一個(gè)不錯(cuò)的選擇
我遇到同樣的問題。唯一的區(qū)別是我想要讀取文件后的返回類型—— String 。于是,我找到了一個(gè)好用的api—— this.getClass().getClassLoader().getResource(String name)。
String read = null;
URL resource = this.getClass().getClassLoader().getResource("static/facility-tree.json");
CharSource charSource = Resources.asCharSource(resource, Charset.defaultCharset());
read = charSource.read();
CharSource和Resources來自Guava,因此需要在pom.xml中添加依賴。
<!--guava->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
添加回答
舉報(bào)