【问题标题】:Java FileReader FileNotFound issue when reading in the string读取字符串时出现 Java FileReader FileNotFound 问题
【发布时间】: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


【解决方案1】:

您需要输入不带引号的文件名。如果使用引号输入,则文件名也必须包含引号。

如果您使用Lab3/test 等文件名,那么Java 将在当前工作目录中搜索该文件。当前工作目录通常是启动应用程序的位置。如果您输入完整的绝对文件名,例如C:\Users\Smithers\Dropbox\Software Engineering Code\Eclipse\Networking\Lab3\test,我可能会更容易。

使用反斜杠还是正斜杠都没关系。

【讨论】:

  • 我在您发布此内容时意识到这一点,感谢您阅读提示和技巧。
猜你喜欢
  • 1970-01-01
  • 2012-04-06
  • 2016-03-29
  • 2015-01-03
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
相关资源
最近更新 更多