我想读取来自的字符串行和字节数组一个 InputStream。我正在做这样的时候:Java - 从1 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码。这意味着当我用阅读器阅读时,流不会更新位置。有没有办法同步他们的立场?我知道DataInputStream可以做到这两点:读取字节数组和读取行。但它的readLine
方法已被废弃,它不能正确地将字节转换为字符。
的字节数也可以包含0,10和13以及所有其他字节高达255
性能是很重要的,所以我真的不想读字节后,字节或焦化物后焦。此外,如果可能的话,我想避免“手动”计数字节和字符读取使用“跳过”方法。
这是混淆二进制和文本数据的奇怪想法。我认为在你的情况下,正确的方法(读取一些元数据,例如“16字节的字节数组后跟随”)是: *字节读后字节; *解析命令(data16); *解析以下数据; – Kerb