8192
ファイルから最初のバイトを読み取り、ブール値を返すメソッドを介してそれらのバイトを実行 しようとしています。
そのブール値は、ファイルが特定のタイプであるかどうかを教えてくれます。
メソッドがファイル タイプのバイトに対して true を返した場合、残りのバイトを取得して別のメソッドで実行します。false の場合、残りのバイトを別の方法で実行します。
マークを使用しようとしていますが、成功していません。
private final void handleFile(InputStream inputStream) {
BufferedInputStream bis = new BufferedInputStream(inputStream);
bis.mark(8192);
byte[] startingBytes = inputStreamToByteArray(bis);
if(startingBytes.length == 0) { return; }
byte[] finalBytes;
if(isFileType(startingBytes)) {
bis.reset();
finalBytes = inputStreamToByteArray(bis);
methodForFinalBytes(finalBytes);
} else {
// Do other stuff;
}
}
private byte[] inputStreamToByteArray(InputStream inputStream) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
try {
while(inputStream.read(buffer) != -1) {
baos.write(buffer);
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
return baos.toByteArray();
}
問題は、バイト配列をチャンクに保持しながら(大きなファイルに対する処理のために)、中断したところから再開することです。また、8192
残りのバイトではなくバイトのみが返されます。
助言がありますか?