Java交互输入EOF

标签 java input eof

我正在尝试为棋盘游戏实现用户输入界面。我试图一次获取一个用户输入,然后将其写入文件(因为我需要保存用户所做的移动列表)。到目前为止,我所拥有的运行良好(读取输入并将其写入文件),但是,每当用户想要停止输入时,程序就会停止工作。 IE;当您按 ctrl+c 时,程序就会结束。

这是我到目前为止所得到的,fileName 变量已在主函数外部声明

public static void main(String[] args) throws IOException {
    BufferedReader inputReader = new BufferedReader (new InputStreamReader (System.in));
    try {
        FileWriter outFile = new FileWriter (fileName);
        PrintWriter out = new PrintWriter (outFile);
        System.out.print ("Enter move: ");
        String line = inputReader.readLine();
        while (line != null) {
            System.out.print ("Enter move: ");
            out.write(inputReader.readLine());
            out.write(" ");
            }
            out.close();
    } catch (IOException e) {
        System.out.println (e.getMessage());
    }

    System.out.println ("Reached here");
}

我想做的是,每当用户想要停止输入时,我想要到达显示“已到达此处”的打印行。我想这样做是因为一旦在循环之外,我可以读取文件,然后拆分输入并对其进行操作。我记得在用 C 语言编程时,曾经有 while (input != EOF);每当用户输入 ctrl+d 或 ctrl+c 时,它就会停止正在执行的操作,然后移至下一行代码。 我怎样才能在java中做到这一点?

非常感谢。

最佳答案

如果在每次写入后刷新,那么当用户点击 control-c 时,您至少应该获得一个完整的文件。

至于在 control-c 发生后处理更多信息,您可以使用关闭钩子(Hook)来实现,例如:

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { 
        // do something before quiting
    }
});

但是,我不知道您可以取消终止。

我会为“不再输入”操作选择更正常的字符输入。

关于Java交互输入EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5943959/

相关文章:

c++ - getAsyncKeyState 无法识别键输入

python - 使用python的二进制文件中的EOF

java - 如何从另一个文件加载maven依赖项?

java - 带有编码参数的 RestTemplate

Android Lollipop 定时器(持续时间)输入

python - 如何处理原始数据(在 python 中)?

c - 如何使用 scanf 读取完整文件可能类似于 %[^\EOF] 而无需在单个语句中循环

c - for 循环条件下的 getchar()

java - 使用 Netbeans 进行 Android 应用程序编程

java - 函数执行的顺序(多线程)