3 回答

TA貢獻1804條經驗 獲得超3個贊
假設您實際上想要讀取文件而不是嘗試使用類加載器來尋址資源:
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);
這對我有用

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

TA貢獻1783條經驗 獲得超4個贊
'this.getClass().getClassLoader().getResourceAsStream()' 是一個不錯的選擇
我遇到同樣的問題。唯一的區別是我想要讀取文件后的返回類型—— String 。于是,我找到了一個好用的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>
添加回答
舉報