Java文件未找到但在同一目录中并且具有捕获的异常

时间:2014-02-19 13:48:46

标签: java file-io io bufferedreader

好的,这很奇怪,很荒谬......

我有这个非常简单的代码:

    public static void main(String[] args) throws Exception {
      BufferedReader br = new BufferedReader(new FileReader("input.txt"));
      String s;
      while ((s = br.readLine()) != null) {
        System.out.println(s);
      }
    }

我还尝试将BufferedReader...包装在try-catch块中。为什么这会引发这个错误:

 Exception in thread "main" java.io.FileNotFoundException: /input.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at java.io.FileReader.<init>(FileReader.java:58)

它出现在BufferedReader行。

该文件与java文件位于同一个包/目录中。我已经尝试过声明抛出异常和try-catch块。

无论我做什么,我都会收到这个错误。

2 个答案:

答案 0 :(得分:4)

您需要将文件放在启动Java的工作目录中。根据您启动程序的方式,这可能会有所不同。

您可以使用以下方式打印当前工作目录:

System.out.println(System.getProperty("user.dir"));

答案 1 :(得分:0)

使用Thread.currentThread().getContextClassLoader().getResourceAsStream("path");

轻松访问包中的任何资源

示例:

InputStream inputstreamFromPackage = Thread.currentThread().getContextClassLoader().getResourceAsStream("<packageName/file.ext>");