如何在使用后清除缓冲区?

时间:2011-07-14 17:25:06

标签: java

我正在使用BufferedReader。我只是想知道如何在每一行从键盘读取值后清除BufferedReader。我正在使用像

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String male = br.readLine();

请帮帮我。

2 个答案:

答案 0 :(得分:5)

没有任何理由“清除”字符串“缓冲区”。如果您担心内存使用,当JVM不再使用时,它将自动被JVM垃圾收集。

然而,

str = null;

将有效删除对String的引用。字符串是不可变的,因此您无法修改“缓冲区”并将其清除,您可以做的最好是删除对它的引用然后将其收集垃圾。

修改

回答有关BufferedReaders的问题......

没有必要也没办法“清除”BufferedReader。如果您遇到错误,您可以再次调用readLine(),之前您读过的任何内容都不会产生任何影响。如果您正在从文件中读取并获得异常,则应检查文件是否在文件的末尾,但由于您是从键盘读取的,因此我建议您再次调用readLine()。

答案 1 :(得分:5)

清除缓冲区是没有意义的。

如果是输出缓冲区,例如BufferedWriter,然后您可以刷新缓冲区以确保在关闭缓冲区之前已写入所有缓冲的内容 在这种情况下,你可以在br.readLine()返回null之后关闭缓冲区,这意味着没有更多的输入要被读取。