我当前的应用程序需要从文件中获取数据以初始化其属性。 它需要存储在一个文件中才能修改用户。
String strFile = ClassLoader.getSystemResource("myFile.csv").getPath();
if(strFile==null)
throw new Exception("File not find");
BufferedReader br = new BufferedReader(new FileReader(strFile));
//Begin reading file process..
我的问题是strFile
不是null,但是在br
初始化时我有 java.io.FileNotFoundException ,请参阅以下堆栈:
java.io.FileNotFoundException: C:\Users\TH951S\My%20Documents\Eclipse\Workspace
\My%20App\bin\myFile.csv
(The system cannot find the path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileReader.<init>(Unknown Source)
我检查了文件是否在指定的路径中,一切似乎都正确。
有谁知道为什么会这样?或者在路径未知时有另一种获取文件的方法吗?
感谢阅读和更多回答,
答案 0 :(得分:2)
我解决了我的问题,其中一个让你因为没有尽快解决它而感到愚蠢。
URL正在编码值为%20
的空格,而Java在FileReader
初始化时不会用空格字符替换值。因此,有必要将%20
改为" "
。
还有另一种计算方法。也可以使用BufferedReader
初始化InputStreamReader
,如下所示:
InputStream in=ClassLoader.getSystemResourceAsStream("myFile.csv");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
希望它有助于其他人,
答案 1 :(得分:1)
为了完整性:我遇到了同样的问题,但结果已经成为File
对象(因为我需要文件的大小)。
URL url = ClassLoader.getSystemResource("myFile.csv");
File file = new File(url.toURI());
System.out.println("Correct path: " + file.getAbsolutePath());
System.out.println("Size of file: " + file.length());
该解决方案的灵感来自sysLoader.getResource() problem in java。
我很惊讶我必须经历这么多课程,但我没有找到更接近的解决方案。