0

我正在用java编写一个程序,它将读取一个文件并将其中的每个单词放入一个数组中,这样我就可以在将它们排序到默认数组后对每个单词进行一个字谜。我很清楚如何做到这一点,除了我的 .txt 文件没有被读取。我在 src 中有一个名为“input.txt”的文件,其中包含我正在编写的“anagram.java”程序,但是当代码提示文件条目时,在输入文件名“input.txt”时,我的代码说该文件不存在,我明白了:

Enter file name: 
input.txt
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:120)
        at java.io.FileInputStream.<init>(FileInputStream.java:79)
        at java.io.FileReader.<init>(FileReader.java:41)
        at anagram.main(anagram.java:23)
Java Result: 1
BUILD SUCCESSFUL (total time: 6 seconds)

这是搞砸的那一行的代码:

    public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter file name: ");
    String fileName = br.readLine();
    File file = new File(fileName);
    if(file.length() == 0)
    {
        System.out.println("File is empty");
        System.exit(1);
    }

显然输入“input.txt”的信息不够多,我不确定。我删除了

    if(file.length() == 0)
    {
        System.out.println("File is empty");
        System.exit(1);
    }

为了得到我上面所说的错误,这就是我发现它甚至无法使用 anagram.java prgm 识别 src 中的文件的方式。

我的代码有什么问题?为什么它不读取文件或说它不存在?

4

2 回答 2

22

我敢说文件在src目录中 - 但我怀疑这不是程序的当前工作目录。要检查这一点,请运行以下代码:

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

选项:

  • 指定绝对文件名
  • 指定一个相对文件名,该文件名考虑到您运行它的位置
  • 将文件捆绑为资源并使用Class.getResourceAsStream或类似

请注意,这与BufferedReader您毫无问题地阅读文本System.in无关。

于 2013-03-12T17:32:14.630 回答
1

它正在寻找与您的源目录不同的路径。尝试指定完整路径c:\input.txt(但不要忘记将文件移到那里!)以了解我的意思。

于 2013-03-12T17:32:09.720 回答