0

我想从一个InputStream 中读取字符串行和字节数组。我当时就是这样做的:

// stream for reading byte arrays
InputStream stream = process.getInputStream();
// reader for reading String lines
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));

String msg = reader.readLine();
// if (msg == "data16")
byte[] bytes = new byte[16];
stream.read(bytes);

当我从阅读器那里得到一行data16时,这意味着:后面是 16 个字节的字节数组。问题是,如果我尝试从中读取字节,我会得到“data16”ASCII 码。这意味着当我使用reader 阅读时,流不会更新位置。有没有办法同步他们的位置?我知道 DataInputStream 可以同时做:读取字节数组和读取行。但它的方法已被弃用,它不能正确地将字节转换为字符。readLine

字节还可以包含 0、10 和 13 以及所有其他字节,最多 255

性能很重要,所以我真的不想逐个字节或逐个字符地阅读。另外,如果可能的话,我想避免“手动”计算读取的字节和字符以使用“跳过”方法。

4

1 回答 1

1

我不认为你将能够做你想做的事。BufferedReader 不仅仅是读取新行,它还在缓冲来自 InputStream 的数据。

您最好的选择是自己完成整个事情,但您不必一次读取一个字节,您可以将缓冲区读入内存并进行处理以减少实际 I/O。

于 2013-01-11T11:12:37.667 回答