我在源文件夹中的文件夹中有一个CSV文件,但我无法访问它。
我让它与我在互联网上找到的东西一起工作:
URL url = getClass().getResource("/csv/recetas.csv");
File file = new File(url.getPath());
FileReader fileReader = new FileReader(file);
CSVReader csvReader = new CSVReader(fileReader, ',', '"', 1);
但它只在我在IDE中运行时才有效。当我构建jar并尝试运行它时,FileReader无法找到该文件,它不会为URL或File抛出错误。
这是我的project folder所以你可以理解我。感谢。
答案 0 :(得分:0)
InputStream in = getClass().getResourceAsStream("/csv/recetas.csv");
InputStreamReader reader = new InputStreamReader(in, StandardCharsets.UTF_8);
CSVReader(reader, ',', '"', 1);
资源是可能打包在jar中的类路径“文件”。它们不 File
,并且是只读的。
同样为了兼容性,请明确提供字符集。
答案 1 :(得分:0)
getClass().getResource()
使用类加载器加载资源。这意味着您的csv文件将不可见,除非它位于classpath
。
再次查看您的代码和问题,getClass().getResource()
对我来说似乎是多余的,因为File(...)
的构造函数接受描述为String的文件路径。
请参阅: {{3}}
引用:
File(String pathname)通过转换创建一个新的File实例 将pathname字符串赋予抽象路径名。
为了使您的程序更通用,我建议您避免硬编码文件路径,因为csv文件可以位于文件系统中的任何位置,并且可能并不总是称为recetas.csv
。
人们通常会做的是让java
程序接受--csv
之类的选项。然后让用户指定文件路径,您的代码将只是new File(theSpecifiedPath)
。