java - 如何从资源文件夹加载文件?

标签 java file maven

我的项目具有以下结构:

/src/main/java/
/src/main/resources/
/src/test/java/
/src/test/resources/

我在 /src/test/resources/test.csv 中有一个文件,我想从 /src/test/java/MyTest.java 中的单元测试加载该文件

我有这个代码,但不起作用。它提示“没有这样的文件或目录”。

BufferedReader br = new BufferedReader (new FileReader(test.csv))

我也尝试过这个

InputStream is = (InputStream) MyTest.class.getResourcesAsStream(test.csv))

这也行不通。它返回null。我正在使用 Maven 来构建我的项目。

最佳答案

尝试下一个:

ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("test.csv");
<小时/>

如果以上方法不起作用,各个项目已添加以下类:ClassLoaderUtil 1(代码here)。2

以下是如何使用该类的一些示例:

src\main\java\com\company\test\YourCallingClass.java
src\main\java\com\opensymphony\xwork2\util\ClassLoaderUtil.java
src\main\resources\test.csv
// java.net.URL
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
}
<小时/>

注释

  1. See it时光机中。
  2. 也在 GitHub .

关于java - 如何从资源文件夹加载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52499235/

相关文章:

java - 第二次调用时 jsch channel 断开

java - 为什么我无法删除 Java 中的空格?

java - 在 Eclipse Mars 中找不到 Tomcat Runtime

java - 使用 AspectJ 编译器而不是 Javac 编译时出错

java - 无法使用 dropwizard-core 类

java - 围绕自定义点旋转 javafx ImageView

c - 如何获取C中所有驱动器的列表

file - 什么是文件句柄以及它对程序员有用的地方?

c - 在 C 中解析简单数字 (ASCII) 文件不起作用

Maven 发布 :prepare-with-pom non-interactive