2009-12-02 22 views
3

从我的串行端口读取数据我正在使用inputStream并使用BufferedReader作为inputStream。每次读取后,我想清除BufferedReader。在类BufferedReader下没有明确的方法。我试图使用reset(),但它的工作。任何怪人都可以在这个问题上提出任何建议吗?如何清除java中的BufferedReader

+3

你是什么意思清除BufferReader?写完之后,可以刷新缓冲区 - 但我不知道在读完之后是否需要清除缓冲区。 – 2009-12-02 03:43:03

+0

你的意思是说你想使被缓冲的对象为null? – GustyWind 2009-12-02 03:59:54

+0

DataInputStream inStream; BufferedReader bufRd = new BufferedReader(new InputStreamReader(inStream)); ((str = bufRd.readLine())!= null){System.out.println(str); } 在上面的代码中,每次都执行readLine()我也得到以前读取的内容。像第一次看到“abc”,然后第二次看到“abcdef”。但我只需要“def”。 – 2009-12-02 04:11:05

回答

6

只是为了可读性 - 这是你在注释发布的代码(使用str的附加定义)

DataInputStream inStream = null; 
String str = null; 
BufferedReader bufRd = new BufferedReader(new InputStreamReader(inStream)); 
while((str = bufRd.readLine()) != null){ 
    System.out.println(str); 
} 

是的,它应该工作。无需“清除”或“重置”Stream或Streamreader。从读者那里读取的所有内容都是“从中获取的”,下次阅读时您将不会再看到它。因此,如果您真的看到项目重新出现在阅读器上(并且您还没有“定制”阅读器本身),那么很可能您的数据源一次又一次地发送相同的数据。检查该区域。

+0

非常感谢。我为我工作。 – 2009-12-14 02:20:15

+0

readLine()已被弃用。 – 2014-09-24 10:04:36

2

尽量使缓冲

的新实例
BufferedReader br = new BufferedReader(newInputStreamReader(socket.getInputStream())); //create 
String read = br.readLine(); //read line 
br = new BufferedReader(newInputStreamReader(socket.getInputStream())); 

我使用socket通信所以这里是插座的例子。 我希望我帮你