IntelliJ “FileNotFoundException”, File Exists

我的目标是在IntelliJ上读取一个文本文件。但是,当我运行代码时,我收到“FileNotFoundException”消息。我的文件存在。我仔细检查以确保路径正确。我已经搜索了Stack Overflow寻找答案,阅读了我遇到的每个问题,但没有人为这个问题提供具体的解决方案。

这是我的代码:

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;


    public class LetterGrader {

        public static void main(String[] args) {

           String curDir = new File(".").getAbsolutePath();
           System.out.println("Current sys dir: " + curDir);


           try {
               File inputData = new File("input.txt");
               BufferedReader br = new BufferedReader(new FileReader(inputData));

           } catch (IOException e) {
               System.out.println("File not found");
               e.printStackTrace();
           }
       }
    }

这是出现的错误消息。

    File not found
    java.io.FileNotFoundException: input.txt (The system cannot find the file specified)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileReader.<init>(FileReader.java:72)
        at LetterGrader.main(LetterGrader.java:23)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

    Process finished with exit code 0

任何帮助将不胜感激!当我找到解决方案时,我也会做出回应。

[更新]

我通过将“输入.txt”文件移出或src文件夹并移入主项目的文件夹来解决此问题。

我还使用Scanger而不是BufferedReader。

我最终有效的代码:

        try {
            Scanner diskScanner = new Scanner(new File("input.txt"));
            while (diskScanner.hasNextLine()) {
                System.out.println(diskScanner.nextLine());
            }
            diskScanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

答案 1

问题在于工作目录的差异,即源代码所在的目录和当前工作目录不同。通常,工作目录是项目的主目录。因此,您可以将文件放在该目录中,或者使用选项。选择 后,选中该选项并相应地进行更改。IntelliJEdit Configurations...Edit Configurations...Working directory


答案 2

您可以先尝试打印文件的绝对路径

System.out.println(new File("input.txt").getAbsolutePath());

然后,由于您使用的是 IntelliJ,因此您可以直接在 IDE 中打开终端,并尝试从那里打开此文件。例如:

cat /Users/antonpp/Documents/Projects/testapp/input.txt

因此,您将完全确定该文件存在并且它位于正确的位置。


推荐