【发布时间】:2012-05-06 15:30:45
【问题描述】:
我有以下代码:
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter: ");
String m = inFromUser.readLine();
BufferedReader br = new BufferedReader(new FileReader(m));
String text;
while((text = br.readLine()) != null){
System.out.println(text);
}
br.close();
当从用户那里读取字符串时,永远找不到文件。我不知道传递字符串时发生了什么,但它变得无法找到。虽然文件非常多。
我已经运行了测试,当我用 newFileReader("Lab3/test") 替换 newFileReader(m) 时,找到了文件,但是当我将 "Lab3/test" 输入系统时(通过字符串 m = inFromUser .readLine();) 来读取它,它被读入并打印为“Lab3/test”,但是当字符串被传递到文件读取器(通过 m)时,文件读取器永远找不到文件,当字符串完全相同时.
我用谷歌搜索了一下,但试图解释这很痛苦。
提前谢谢你,山姆
【问题讨论】:
-
为了调试目的,试试这个
String m = inFromUser.readLine(); File f = new File(m); System.out.prinln(f.getAbsolutePath() + " exists: " + f.exists()); .. -
我刚刚尝试添加文件 f = new File(m);好的,当我输入字符串时, new File(m) 工作正常。它拾取文件,我添加了您的建议和收到的内容:“输入:“Lab3/test”C:\Users\Smithers\Dropbox\Software Engineering Code\Eclipse\Networking\“Lab3\test”存在:false”但是有一次如果我再次将 f 传递给缓冲的阅读器,它仍然说找不到文件,这肯定是矛盾的?
-
new File(m)将始终有效,无论文件是否存在。问题是,new File(m).exists()返回什么。如果它exists()返回false,就像你的情况一样,那么文件不存在。 -
输入不带引号和空格的文件名或删除带修剪的空格。字符串 m = inFromUser.readLine(); m = m.trim();
-
我改了:String m = inFromUser.readLine();文件 f = 新文件(m);到:字符串 m = inFromUser.readLine();文件 f = new File("Lab3/test");这返回:“输入:C:\Users\Smithers\Dropbox\Software Engineering Code\Eclipse\Networking\Lab3\test exists: true” 我能看到的唯一区别是,如果没有将其输入系统,它们之后就没有空格Networking\ 和 Lab3\test 不在引号中。
标签: java filenotfoundexception filereader