我想从一个 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);
当我从 reader 获得 data16 行时,这意味着:接下来是16字节的字节数组。问题是如果我尝试从 stream 读取字节,我会得到“data16”ASCII码。这意味着当我使用 reader 阅读时,流不会更新位置。有没有办法同步他们的立场?我知道DataInputStream可以做到这两点:读取字节数组和读取行。但是它的readLine
方法已被弃用,它无法正确地将字节转换为字符。
字节也可以包含0,10和13以及所有其他字节,最多255个
性能很重要,所以我真的不想读取byte-after-byte或char-after-char。另外,如果可能的话,我想避免“手动”计算读取的字节和字符,然后使用“跳过”方法。
答案 0 :(得分:1)
我认为你不能做你想做的事。 BufferedReader不只是读取新行,而是缓冲来自InputStream的数据。
你最好的选择就是自己完成所有事情但你不必一次读取一个字节,你可以将缓冲区读入内存并继续处理它以减少实际的I / O.