用户输入后,Java Scanner(System.in)不会打开文件

时间:2017-02-10 17:38:07

标签: java java.util.scanner filenames bufferedreader

您好,我遇到了一个无法找到解决方案的问题。我要求用户输入文件的名称,但我得到的输出始终是“无法打开文件”。任何建议都将不胜感激。

    Scanner reader = new Scanner(System.in); 
    System.out.println("Enter the name of textfile to be read ( add .txt): ");

    String fileName = reader.next();
    String line = null;
    BufferedReader bufferedReader =   new BufferedReader(fileReader);

    while((line = bufferedReader.readLine()) != null) {
        System.out.println(line); 

        catch(FileNotFoundException ex) {
        System.out.println(
            "Unable to open file '" + 
            fileName + "'");                
       }

        catch(IOException ex) {
        System.out.println(
            "Error reading file '" 
            + fileName + "'");                  
        // Or we could just do this: 
        // ex.printStackTrace();
    }
    }

FileNotFoundException总是被执行但是为什么?

P.S如果我将路径更改为特定位置(例如“C:\ etc”),则会读取该文件。

2 个答案:

答案 0 :(得分:0)

如果您只提供文件名而不提供路径,那么Java不知道在哪里查找。如果您确定该文件将位于项目目录中,则只需将C:/ etc添加到用户输入中。

答案 1 :(得分:0)

如果未指定绝对文件路径,即C:/dir/...,则java将与项目根目录(与srcbin相同的目录查找文件夹)。如果文件在那里,它将仅使用文件名找到它,或者如果您在该文件夹中创建目录,则需要该路径中的该目录。如果您有可执行的JAR,它将在JAR所在的同一目录中查找。