【问题标题】:Java Scanner(System.in) does not open file after user inputJava Scanner(System.in)在用户输入后不打开文件
【发布时间】:2017-02-10 17:38:07
【问题描述】:

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

    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”,它会读取文件。

【问题讨论】:

  • FileNotFoundException 总是被执行,但是为什么? - 因为找不到你提供的路径的文件?
  • 如果我被误解了,我会尽快修改我的问题。

标签: java java.util.scanner filenames bufferedreader


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,我需要指定文件的整个路径,例如“C:\\etc”。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 2016-04-14
    • 2022-10-12
    • 2014-06-20
    • 1970-01-01
    • 2013-04-04
    相关资源
    最近更新 更多