以下のように連結されたファイル内に一連のオブジェクトが格納されています。
sizeOfFile1 || file1 || sizeOfFile2 || file2 ...
ファイルのサイズはシリアル化された長いオブジェクトであり、ファイルはファイルの生のバイトです。
入力ファイルからファイルを抽出しようとしています。以下は私のコードです:
FileInputStream fileInputStream = new FileInputStream("C:\Test.tst");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
while (fileInputStream.available() > 0)
{
long size = (long) objectInputStream.readObject();
FileOutputStream fileOutputStream = new FileOutputStream("C:\" + size + ".tst");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
int chunkSize = 256;
final byte[] temp = new byte[chunkSize];
int finalChunkSize = (int) (size % chunkSize);
final byte[] finalTemp = new byte[finalChunkSize];
while(fileInputStream.available() > 0 && size > 0)
{
if (fileInputStream.available() > finalChunkSize)
{
int i = fileInputStream.read(temp);
secBufferedOutputStream.write(temp, 0, i);
size = size - i;
}
else
{
int i = fileInputStream.read(finalTemp);
secBufferedOutputStream.write(finalTemp, 0, i);
size = 0;
}
}
bufferedOutputStream.close();
}
fileOutputStream.close();
私のコードは、最初の sizeOfFile を読み取った後に失敗します。複数のファイルが保存されている場合、残りの入力ファイルを 1 つのファイルに読み込むだけです。
誰でもここで問題を見ることができますか?
よろしく。