【发布时间】:2019-04-03 12:08:08
【问题描述】:
我写了一个小的 Press Enter to Continue 模块,但 Java 不允许我在读取 BufferedInputStream 后关闭它。如果我关闭它,当我尝试再次调用该模块时,它会报错“流已关闭”,即使我先尝试再次打开它。
import java.io.*;
final public class PressEnter {
public static void toContinue() {
try {
BufferedInputStream buff=new BufferedInputStream(System.in);
int in=buff.read();
buff.close();
}
catch (IOException e) { System.out.println("Error: "+e.getMessage()); }
}
}
我没有关闭 BufferedInputStream 并且它工作正常,我调用它的次数也是如此。留在 buff.close 中会出错。
public class TestPressEnter {
public static void main(String[] args) {
System.out.print("Press Enter To Continue...");
PressEnter.toContinue();
System.out.println("Continuing...");
System.out.print("Press Enter To Continue Again...");
PressEnter.toContinue();
System.out.println("Continuing...");
}
}
【问题讨论】:
-
删除
buff.close();。你正在关闭System.in。 -
问题是
BufferedInputStream.close()也会关闭传递的流(在您的情况下为System.in),这是您不希望发生的事情。
标签: java