从资源文件夹中读取文件,InputStream为null [英] Read file from resource folder, InputStream is null
本文介绍了从资源文件夹中读取文件,InputStream为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Windows 7 ,x64, Java 11
如何读取main中资源文件夹中的文件.
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
// Input stream is null.
InputStream is = App.class.getResourceAsStream(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
return br.lines().collect(Collectors.toList());
我在测试/资源中遇到了类似的问题.
private static List<String> readLines(final String filename) {
try (final InputStreamReader isr = new FileReader(getFileFromResource(filename));
final BufferedReader br = new BufferedReader(isr)) {
return br.lines().collect(Collectors.toList());
} catch (IOException e) {
throw new RuntimeException(String.format("Failed to read file: %s", filename), e);
}
}
private static File getFileFromResource(final String filename) {
///////// App.class.getResource is NULL
final URL url = App.class.getClassLoader().getResource(filename);
if (url == null) {
throw new RuntimeException(String.format("Failed to read resource %s from resources folder.", filename));
}
return new File(url.getFile());
}
但是对于测试/资源有效的方法不适用于 java/resources .
在Java-11或我的代码中发生了什么?
我尝试了此
URL url = ClassLoaderUtil.getResource("test.csv", YourCallingClass.class);
Path path = Paths.get(url.toURI());
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
还有这个
// java.io.InputStream
InputStream inputStream = ClassLoaderUtil.getResourceAsStream("test.csv", YourCallingClass.class);
InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(streamReader);
for (String line; (line = reader.readLine()) != null;) {
// Process line
}
其他示例 >
这没有帮助
private List<String> readLines(String filename) {
// InputStream is null
InputStream is = getClass().getClassLoader()
.getResourceAsStream(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
return br.lines().collect(Collectors.toList());
}
解决方案
我解决了!!! >
专家
我用Maven构建我的项目.将文件添加到资源后,它没有进入目标目录.
重建项目.
mvn clean install
Windows 7, x64, Java 11
How to read a file in resources folder in main.
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
// Input stream is null.
InputStream is = App.class.getResourceAsStream(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
return br.lines().collect(Collectors.toList());
I had a similar problem with test/resources.
private static List<String> readLines(final String filename) {
try (final InputStreamReader isr = new FileReader(getFileFromResource(filename));
final BufferedReader br = new BufferedReader(isr)) {
return br.lines().collect(Collectors.toList());
} catch (IOException e) {
throw new RuntimeException(String.format("Failed to read file: %s", filename), e);
}
}
private static File getFileFromResource(final String filename) {
///////// App.class.getResource is NULL
final URL url = App.class.getClassLoader().getResource(filename);
if (url == null) {
throw new RuntimeException(String.format("Failed to read resource %s from resources folder.", filename));
}
return new File(url.getFile());
}
But what worked for test/resources does not work for java/resources.
What happened in Java-11 or in my code?
I tried this
URL url = ClassLoaderUtil.getResource("test.csv", YourCallingClass.class);
Path path = Paths.get(url.toURI());
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
And this
// java.io.InputStream
InputStream inputStream = ClassLoaderUtil.getResourceAsStream("test.csv", YourCallingClass.class);
InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(streamReader);
for (String line; (line = reader.readLine()) != null;) {
// Process line
}
And this does not help
private List<String> readLines(String filename) {
// InputStream is null
InputStream is = getClass().getClassLoader()
.getResourceAsStream(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
return br.lines().collect(Collectors.toList());
}
解决方案
maven
I build my project with maven. After I added a file to resources, it did not go to target directory.
Rebuild the project.
mvn clean install
这篇关于从资源文件夹中读取文件,InputStream为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文