【问题标题】:Java File Not Found but in same directory and with caught exceptions未找到 Java 文件但在同一目录中并捕获异常
【发布时间】:2014-02-19 13:48:46
【问题描述】:

好吧,这很奇怪和荒谬..

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

    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 文件位于同一包/目录中。我尝试过声明 throws Exception 和 try-catch 块。

无论我做什么,我都会不断收到此错误。

【问题讨论】:

  • The file is in the same package / directory as the java file.。你的期望是错误的。

标签: java file-io io bufferedreader


【解决方案1】:

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

您可以使用以下命令打印当前工作目录:

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

【讨论】:

    【解决方案2】:

    使用Thread.currentThread().getContextClassLoader().getResourceAsStream("path");从包中访问任何资源的简单方法

    例子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 2012-09-15
      相关资源
      最近更新 更多