2013-03-12 76 views
-2

我正在制作一个java程序,它将读取一个文件并将其中的每个单词放入一个数组中,以便在将它们排序为默认数组后,可以将每个单词的字母组合。我有一个很好的想法,除了我的.txt文件没有被读取。我在src中使用我正在编写的“anagram.java”程序创建一个名为“input.txt”的文件,但是当代码提示输入文件时,在输入文件名“input.txt”时,我的代码显示文件不存在,我得到这个:FileInputStream未找到文件

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文件。

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

+0

当您有标签时,您不必在标题中指定JAVA。 – 2013-03-12 17:31:02

+0

您必须提供文件的完整路径。在Windows中,这将是C:\ directory \ subdirectory \ input.txt – 2013-03-12 17:32:55

+0

您是否尝试指定完整路径?如果你从* bin开始编程,它不知道在哪里查找文件。 – 2013-03-12 17:34:00

回答

16

我敢说这个文件是在src目录下 - 但我怀疑这是而不是这个程序的当前工作目录。要进行检查,运行此代码:

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

选项:

  • 指定一个绝对的文件名
  • 指定相对文件名,其考虑到了你运行该
  • 捆绑文件作为资源和使用Class.getResourceAsStream或类似

请注意,这没有与BufferedReader联系 - 您正在阅读System.in中的文本,没有任何问题。

+0

优秀!事实上,它不是从src文件中读取的。我现在正在阅读该文件,但是我得到了一些看起来像某些格式化代码的复杂的括号和斜杠输出。该文件最初是和.rtf,但是当我将其更改为.txt时,我注意到了这一点,当我用dropmenu选择“get info”查看文件信息时,我会将其恢复为rtf并查看会发生什么... – 2013-03-12 17:45:17

+0

@RyanTibbetts:目前还不清楚“将其改为.txt”的意思 - 重命名该文件不会改变其上下文。这听起来像你确实看到RTF ... – 2013-03-12 17:48:29

+0

我将它恢复到一个.rtf,虽然信息选项卡显示它正常,它会看起来程序仍在字面上阅读它。 – 2013-03-12 17:48:30

1

它正在寻找一个不同于源目录的路径。尝试指定一个完整路径,例如c:\input.txt(但不要忘记将文件移到那里!)以查看我的意思。