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 までの他のすべてのバイトを含めることもできます。
パフォーマンスは重要なので、byte-after-byte や char-after-char を読みたくありません。また、可能であれば、「スキップ」メソッドを使用するために読み取られたバイトと文字を「手動で」カウントすることを避けたいと思います。