读取字符串时Java FileReader FileNotFound问题

读取字符串时Java FileReader FileNotFound问题,java,filenotfoundexception,filereader,Java,Filenotfoundexception,Filereader,我有以下代码: BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter: "); String m = inFromUser.readLine(); BufferedReader br = new BufferedReader(new FileReader(m)); St

我有以下代码:

    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=INFOROMUSER.readLine();)来读取它时,它被读入并打印为“Lab3/test”,但当字符串被传递到文件读取器(通过m)时,文件读取器永远找不到文件,当字符串完全相同时

我在谷歌上搜索了一下,但试图解释这是一种痛苦


A事先谢谢,Sam

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

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


使用反斜杠或正斜杠并不重要。

出于调试目的,请尝试以下
String m=INFOROMUSER.readLine();文件f=新文件(m);System.out.prinln(f.getAbsolutePath()+“exists:”+f.exists())我刚刚尝试添加文件f=新文件(m);好,当我输入字符串时,新文件(m)工作正常。它拾取文件,我添加了您建议并收到的内容:“输入:“Lab3/test”C:\Users\Smithers\Dropbox\Software Engineering Code\Eclipse\Networking\“Lab3\test”存在:false”但如果我将f传递到缓冲读取器中,它仍然会说找不到文件,这肯定是矛盾的?新文件(m)将始终有效,无论文件是否存在。问题是,
新文件(m).exists()返回什么。如果它
exists()
返回
false
,与您的情况相同,则该文件不存在。请输入不带引号和空格的文件名,或使用trim删除空格。字符串m=INFOROMUSER.readLine();m=m.修剪();我改变了:字符串m=INFOROMUSER.readLine();文件f=新文件(m);to:String m=INFOROMUSER.readLine();文件f=新文件(“Lab3/test”);结果返回:“输入:C:\Users\Smithers\Dropbox\Software Engineering Code\Eclipse\Networking\Lab3\test exists:true”我能看到的唯一区别是,如果不将其输入到系统中,它们在联网后就没有空间了,并且Lab3\test没有引号。我意识到这一点,就在您发布这篇文章时,感谢大家阅读《提示与小贴士》。