BufferedReader和InputStream读错了

时间:2015-03-17 22:02:46

标签: java io

从流中读取数据时遇到了很大的问题。

我有这样的代码:

 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
 String topic = bufferedReader.readLine();

 while ((bytesRead = inputStream.read(array, 0, array.length)) != -1) {
            // do something with array of bytes
        }

首先,我想获得主题名称,这是一个以\ n结尾的单个单词。 接下来,我想读取其余的数据(我正在以块的形式阅读)。

问题是inputStream.read返回-1,因为所有内容都在bufferedReader中读取。我该如何解决?

3 个答案:

答案 0 :(得分:1)

继续使用bufferedreader并且不要从侧面/下面读取数据。最后一个读者被缓冲,因此它可以提前读取,因此输入流是空的。

它就像一条管道。如果你开始在它的中间钻一个洞,那么预计已经有油流过那个新洞,因此你无法通过打开中间的管道来取回它。

答案 1 :(得分:0)

您需要从BufferedReader读取所有数据。在包装inputStream之后,您无法轻松返回。或者,您可以通过读取字符并检查换行符来读取inputStream的第一行。

答案 2 :(得分:0)

您正在使用InputStream对BufferedReader的对象进行实例化,因此您的InputStream的内容已经“保存”了#34;在你的BufferedReader中! 所以继续读取你的BufferedReader对象:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String topic = bufferedReader.readLine();

while ((bytesRead = bufferedReader.read(array, 0, array.length)) != -1) {
        // do something with array of bytes
}