Go
Go
Transition from Compression.BeginCompressBytes to FirstChunk/LastChunk
Provides instructions for replacing deprecated BeginCompressBytes method calls with using FirstChunk and LastChunk properties.Chilkat Go Downloads
success := false
facSrc := chilkat.NewFileAccess()
facDest := chilkat.NewFileAccess()
// Open a large binary file for reading.
success = facSrc.OpenForRead("qa_data/bmp/big.bmp")
if success == false {
fmt.Println(facSrc.LastErrorText())
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
return
}
// If we compress in 64K chunks, find out how many blocks there will be.
blockSize := 65536
numBlocks := facSrc.GetNumBlocks(blockSize)
// Open an output file for the compressed data.
success = facDest.OpenForWrite("c:/temp/qa_output/compressedBmp.dat")
if success == false {
fmt.Println(facDest.LastErrorText())
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
return
}
compress := chilkat.NewCompression()
compress.SetAlgorithm("deflate")
var fileBytes []byte
var compressedBytes []byte
// ----------------------------------------------------------------------------------
// This is the deprecated way of compressing in chunks using Begin/More/End methods..
// ----------------------------------------------------------------------------------
i := 0
for i < numBlocks {
fileBytes = facSrc.ReadBlock(i,blockSize)
if i == 0 {
compressedBytes = compress.BeginCompressBytes(fileBytes)
} else {
compressedBytes = compress.MoreCompressBytes(fileBytes)
}
facDest.FileWrite(compressedBytes)
i = i + 1
}
// At the very end, flush any remaining compressed bytes, if any.
compressedBytes = compress.EndCompressBytes()
facDest.FileWrite(compressedBytes)
facSrc.FileClose()
facDest.FileClose()
fmt.Println("Finished compressing file.")
// ----------------------------------------------------------------------------------
// This is new way of compressing in chunks using FirstChunk and LastChunk properties
// ----------------------------------------------------------------------------------
success = facSrc.OpenForRead("qa_data/bmp/big.bmp")
if success == false {
fmt.Println(facSrc.LastErrorText())
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
compress.DisposeCompression()
return
}
success = facDest.OpenForWrite("c:/temp/qa_output/compressedBmp2.dat")
if success == false {
fmt.Println(facDest.LastErrorText())
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
compress.DisposeCompression()
return
}
// Assuming numBlocks > 1
compress.SetFirstChunk(true)
compress.SetLastChunk(false)
i = 0
for i < numBlocks {
fileBytes = facSrc.ReadBlock(i,blockSize)
compressedBytes = compress.CompressBytes(fileBytes)
facDest.FileWrite(compressedBytes)
i = i + 1
compress.SetFirstChunk(false)
if i == (numBlocks - 1) {
compress.SetLastChunk(true)
}
}
facSrc.FileClose()
facDest.FileClose()
fmt.Println("Finished compressing file 2.")
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
compress.DisposeCompression()