【问题标题】:Why do I get a FileNotFoundException when ClassLoader.getSystemRessource(filename) gives a result?当 ClassLoader.getSystemRessource(filename) 给出结果时,为什么会出现 FileNotFoundException?
【发布时间】:2012-07-05 10:04:03
【问题描述】:

我当前的应用程序需要从文件中获取数据来初始化它的属性。 它需要存储在一个文件中才能对用户进行修改。

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 不为空,但是当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)

我检查了文件是否在指定的路径中,并且一切似乎都正确。

有谁知道为什么会这样?或者在路径未知的情况下有没有其他方法可以获取文件?

感谢您的阅读和更多的回答,

【问题讨论】:

    标签: java bufferedreader filenotfoundexception filereader


    【解决方案1】:

    我解决了我的问题,其中一个让你因为没有尽快解决而感到愚蠢的问题之一。

    URL 是编码具有值%20 的空格,当FileReader 初始化时,Java 不会用空格字符替换该值。因此需要将%20 更改为" "

    还有另一种计数方式。也可以使用InputStreamReader 初始化BufferedReader,如下所示:

    InputStream in=ClassLoader.getSystemResourceAsStream("myFile.csv");
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    

    【讨论】:

      【解决方案2】:

      为了完整性:我遇到了同样的问题,但结果必须是一个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

      我很惊讶我必须复习这么多课程,但我没有找到更接近的解决方案。

      【讨论】:

        猜你喜欢
        • 2016-03-04
        • 1970-01-01
        • 2013-12-08
        • 2012-12-06
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 2014-02-01
        相关资源
        最近更新 更多