2

私は Android の Bluetooth アプリケーションに取り組んでいます。この inputStream は接続ソケットからのものです。特定の長さまでのバイトを読み取りたい。

私が試した最初の方法:

byte[] data = new byte[lengthtoread];
for (int i = 0; i < data.length; i++)
    data[i] =(byte) mmInStream.read() ;

遅すぎることがわかりました。

2 番目の方法:

   byte[] data = new byte[lengthtoread];
   mmInStream.read(data, 0, lengthtoread);

これで、読み取る長さが長すぎるとデータを完全に読み取れないことがわかりました

誰でも私を助けてください??

4

3 に答える 3

4

標準 API のみを使用して、DataInputStreamクラスにはreadFully、ストリームからバイト配列を埋めるメソッドが呼び出されます。

byte[] data = new byte[lengthtoread];
DataInputStream in = new DataInputStream(mmInStream);
in.readFully(data);

ストリームを使い終わったら、ストリームを閉じることを忘れないでください!

于 2013-07-15T20:47:54.297 に答える
0

はい: Jakarta Commons IOUtilsを使用します。このクラスには、ストリームを読み書きするための完全にデバッグされたユーティリティ メソッドが含まれています。

ストリーム全体を読みたい場合は、 を使用しますIOUtils.toByteArray()。ただし、これを行うとメモリが不足する可能性があることに注意してください。通常は、一度にストリームの一部を処理する方が適切です。

于 2013-07-15T20:43:30.523 に答える