我想讀取來自的字符串行和字節數組一個 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