【发布时间】:2012-01-02 11:45:11
【问题描述】:
Reader rdr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(rdr);
String s;
s = br.readLine();
br.close();
Scanner sc = new Scanner(System.in);
s = sc.nextLine();
System.out.print(s);
我注意到如果我关闭BufferedReader,我将无法再从键盘插入输入,因为System.in 以某种方式关闭。无论如何我可以保留br.close()(我需要它来删除文件)然后从键盘添加更多输入?
【问题讨论】:
-
删除什么文件? BufferedReaders 旨在绑定到特定的输入流。关闭它们后,您将无法重复使用它们。
-
你真的不需要关闭
br来删除文件。 -
如果您正在从文件中读取,并在某个时间点使用
BufferedReader,然后关闭BufferedReader,然后从文件流中读取更多内容,您将错过一些字节。这些字节被缓冲的阅读器消耗(为了缓冲)。你需要找到另一种方法。为什么需要从 Reader 子类转到 Scanner?一些api限制?在任何一种情况下,您都可以做不同的事情,例如使用RandomAccessFile和/或也可以做 Reader 事情的自定义 Scanner 子类。 -
这是我正在使用 BufferedReader 读取的文件。然后我需要删除它。如果我不关闭 BufferedReader,我将无法删除文件(file.delete() 返回 false)。
标签: java input bufferedreader system.in