0

我正在尝试读取 .txt 文件,但是当我使用调试器时,它会卡在下一行?我在做一些逻辑错误吗?它都通过多个对象存储到一个数组中:

public static File readFileInfo(Scanner kb)throws FileNotFoundException


{
     System.out.println("Enter your file name");
      String name = "";
      kb.nextLine();
      name = kb.nextLine();
      File file = new File(name);
      return file;
   }

我传入的扫描仪是:

Scanner fin = null, kb = new Scanner(System.in);
  File inf = null;

  inf = FileUtil.readFileInfo(kb);
  fin = new Scanner(inf);
4

2 回答 2

2

您在这里读取两个不同的“文件”:

  • System.in标准输入(或“终端”),用于向用户询问文件名
  • 具有您从用户那里获得的名称的文件

当您调用 时name = kb.nextLine();,您是在询问参数(使用 构建的扫描仪System.in)的下一行。通常,这实际上会阻塞(“挂起”),直到它接收到来自用户的另一行输入(文件名)。如果从命令行运行,请在该窗口中输入文本;如果在 IDE 中运行,请切换到 Console 选项卡并在那里输入。

正如上面提到的 quazzieclodo,您可能只需要调用一次 readLine。

之后,您可以根据 readFileInfo 返回的文件打开第二个扫描程序,然后您实际上是按预期从文本文件中读取。

于 2013-11-11T19:41:54.840 回答
0

假设您的意图是使用 Scanner 读取文本文件:

 File file = new File("data.txt");

    try {
        Scanner scanner = new Scanner(file);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println(line);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
于 2013-11-11T19:29:26.230 回答