Java 为什么可以';我不能从资源中心得到一个文件吗?
为什么我不能从资源中获取文件Java 为什么可以';我不能从资源中心得到一个文件吗?,java,file,csv,resources,embedded-resource,Java,File,Csv,Resources,Embedded Resource,为什么我不能从资源中获取文件 URL resource = getClass().getClassLoader().getResource("input data/logic test.csv"); System.out.println("Found "+resource); CSVParser parser = new CSVParserBuilder().withSeparator(';').build(); CSVReader reader = new CSVRe
URL resource = getClass().getClassLoader().getResource("input data/logic test.csv");
System.out.println("Found "+resource);
CSVParser parser = new CSVParserBuilder().withSeparator(';').build();
CSVReader reader = new CSVReaderBuilder(new FileReader(resource.getFile())).withSkipLines(1).withCSVParser(parser).build();
控制台输出:
Found file:/home/alexandr/Repos/OTUS/first_home_work/target/classes/input%20data/logic%20test.csv
Exception in thread "main" java.io.FileNotFoundException: /home/alexandr/Repos/OTUS/first_home_work/target/classes/input%20data/logic%20test.csv (Нет такого файла или каталога)
答案在您的控制台输出中—根本找不到该文件。 我会尝试与您编写的代码相同的代码,但使用一个没有空格的文件,然后查看是否仍然找不到该文件 它是:
try (InputStream raw = ClassThisIn.class.getResourceAsStream(""input data/logic test.csv")) {
InputStreamReader isr = new InputStreamReader(raw, StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr);
// now use br as if it was your filereader.
}
这解决了许多问题:
getClass().getClassLoader().getResource
不会,这就是为什么不应该这样做)我在目录名和文件名中更改了uu的空间,并正在工作。。。。天哪。这条线路有一个固有的逻辑问题:
CSVReader reader = new CSVReaderBuilder(
new FileReader(resource.getFile()))..
一旦CSV成为Jar的一部分,它将不再作为文件
对象进行访问。但是类似的东西应该直接用于URL
CSVReader reader = new CSVReaderBuilder(
new InputStreamReader(resource.openStream()))..
更改目录名和文件名中的uu的空间,并进行工作
这只在资源不在Jar文件中时才起作用