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>
添加回答
举报