1

次のコードは、BufferedInputStreamを使用してファイルからデータを読み取り、チャンクで処理します。このコードを変更して、ファイルからストリームを介してデータを取得するのではなく、バイト配列からデータを取得するようにします。私はすでにファイルのデータをバイト配列に読み込んでおり、ファイルストリームからのデータを処理する代わりに、これをwhile...loopを使用して配列データを処理したいと考えています。方法がわからない:

FileInputStream in = new FileInputStream(inputFile);
BufferedInputStream origin = new BufferedInputStream(in, BUFFER);

int count;

while ((count = origin.read(data, 0, BUFFER)) != -1)
{
  // Do something
}
4

2 に答える 2

5

ByteArrayInputStreamを使用して、既存のバイト配列をにラップしInputStream、他のバイト配列と同じようにバイト配列から読み取ることができますInputStream

byte[] buffer = {1,2,3,4,5};
InputStream is = new ByteArrayInputStream(buffer);

byte[] chunk = new byte[2];
while(is.available() > 0) {
    int count = is.read(chunk);
    if (count == chunk.length) {
        System.out.println(Arrays.toString(chunk));
    } else {
        byte[] rest = new byte[count];
        System.arraycopy(chunk, 0, rest, 0, count);
        System.out.println(Arrays.toString(rest));
    } 
}
Output:
[1, 2]
[3, 4]
[5]
于 2013-02-07T10:17:47.657 に答える
1

以下は、FileInputStreamからバイト配列にすべてのデータを読み取ります。

FileInputStream input = new FileInputStream (file);
ByteArrayOutputStream output = new ByteArrayOutputStream ();
byte [] buffer = new byte [65536];
int l;
while ((l = input.read (buffer)) > 0)
    output.write (buffer, 0, l);
input.close ();
output.close ();
byte [] data = output.toByteArray ();
于 2013-02-07T10:19:40.913 に答える