Fix file saving

This commit is contained in:
James Seibel
2023-08-22 07:45:25 -05:00
parent 4ec4b2f8dd
commit 794e9afc10
@@ -215,17 +215,19 @@ public abstract class AbstractMetaDataContainerFile
{
fileChannel.position(METADATA_SIZE_IN_BYTES);
try (CheckedOutputStream checkedOut = new CheckedOutputStream(Channels.newOutputStream(fileChannel), new Adler32()); // TODO: Is Adler32 ok?
DhDataOutputStream compressedOut = new DhDataOutputStream(checkedOut))
{
dataWriterFunc.writeBufferToFile(compressedOut);
compressedOut.flush();
this.baseMetaData.checksum = (int) checkedOut.getChecksum().getValue();
}
// the order of these streams is important, otherwise the checksum won't be calculated
CheckedOutputStream checkedOut = new CheckedOutputStream(Channels.newOutputStream(fileChannel), new Adler32());
// normally a DhStream should be the topmost stream to prevent closing the stream accidentally, but since this stream will be closed immediately after writing anyway, it won't be an issue
DhDataOutputStream compressedOut = new DhDataOutputStream(checkedOut);
// write the contained data
dataWriterFunc.writeBufferToFile(compressedOut);
compressedOut.flush();
this.baseMetaData.checksum = (int) checkedOut.getChecksum().getValue();
fileChannel.position(0);
// Write metadata
fileChannel.position(0);
ByteBuffer buffer = ByteBuffer.allocate(METADATA_SIZE_IN_BYTES);
buffer.putInt(METADATA_IDENTITY_BYTES);
buffer.putInt(this.pos.sectionX);