繁体   English   中英

无法从src / main / resources文件夹Java 8中读取文件

[英]Cant read files from src/main/resources folder Java 8

我有如下包装

src->main->java->com->Sample.java
src->main->resources->orders.csv

src->test->java->com->SampleTest.java
src->test->resources->orders.csv 

在Sample.java和SampleTest.java中,我有以下代码

String file1 = "orders.csv";
Stream<String> lines1 = Files.lines(Paths.get(file1)); // Line 1

但是我不认为1号线和2号线的代码有效。 找不到文件。 我设置的file1和file2是否正确?

因为这些是资源文件,所以您想使用Class#getResource(String)来搜索相对于您的类的文件并获取其绝对URL。

您的Sample.java将如下所示:

String file1 = "/main/resources/orders.csv";
Stream<String> lines1 = Files.lines(Paths.get(Sample.class.getResource(file1).toURI()));

您的SampleTest.java将如下所示:

String file1 = "/test/resources/orders.csv";
Stream<String> lines1 = Files.lines(Paths.get(Sample.class.getResource(file1).toURI()));

现在,让我解释一下字符串“ file1 ”的语法。 如果查看JavaDoc ,您会看到它说:

如果名称以'/'('\\ u002f')开头,则资源的绝对名称是名称中'/'之后的部分。

这基本上意味着,如果提供的路径以正斜杠开头,则将相对于您的源目录进行处理。 换句话说,第一个正斜杠之后的所有内容都是源路径的“子路径”。 如果没有正斜杠,则JVM将在当前类装入器定义的包中搜索名为“ main”的包。 所以, "/main/resources/orders.csv"将被处理为"src/main/resources/orders.csv""/test/resources/orders.csv"作为"src/test/resources/orders.csv"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM