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/61542012/

相关文章:

java - 范围报告 3 添加屏幕截图

MergeSort算法中的Java IndexOutOfBoundsException

c# - 将文件的权限更改为只读

java - 如何在tomcat中查看输出?

java - 在运行时更新 Java 代码

.net - 通过 Asp.Net MVC 中的操作提供文件。使用 byte[] 还是 Stream 更好?

file - 使用 COBOL 将 Unicode 字符串写入文件

java - 为使用 jdbc 的应用程序编写测试用例

java - Spring MVC Maven 项目中的 org.springframework.beans.factory.BeanCreationException

java - 在eclipse中的tomcat上部署maven构建项目