Swift
Swift
Transition from Compression.BeginCompressBytes to FirstChunk/LastChunk
Provides instructions for replacing deprecated BeginCompressBytes method calls with using FirstChunk and LastChunk properties.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
let facSrc = CkoFileAccess()!
let facDest = CkoFileAccess()!
// Open a large binary file for reading.
success = facSrc.open(forRead: "qa_data/bmp/big.bmp")
if success == false {
print("\(facSrc.lastErrorText!)")
return
}
// If we compress in 64K chunks, find out how many blocks there will be.
var blockSize: Int = 65536
var numBlocks: Int = facSrc.getNumBlocks(blockSize: blockSize).intValue
// Open an output file for the compressed data.
success = facDest.open(forWrite: "c:/temp/qa_output/compressedBmp.dat")
if success == false {
print("\(facDest.lastErrorText!)")
return
}
let compress = CkoCompression()!
compress.algorithm = "deflate"
var fileBytes: NSData
var compressedBytes: NSData
// ----------------------------------------------------------------------------------
// This is the deprecated way of compressing in chunks using Begin/More/End methods..
// ----------------------------------------------------------------------------------
var i: Int = 0
while i < numBlocks {
fileBytes = facSrc.readBlock(blockIndex: i, blockSize: blockSize)
if i == 0 {
compressedBytes = compress.beginCompressBytes(bData: fileBytes)
}
else {
compressedBytes = compress.moreCompressBytes(bData: fileBytes)
}
facDest.fileWrite(data: compressedBytes)
i = i + 1
}
// At the very end, flush any remaining compressed bytes, if any.
compressedBytes = compress.endCompressBytes()
facDest.fileWrite(data: compressedBytes)
facSrc.fileClose()
facDest.fileClose()
print("Finished compressing file.")
// ----------------------------------------------------------------------------------
// This is new way of compressing in chunks using FirstChunk and LastChunk properties
// ----------------------------------------------------------------------------------
success = facSrc.open(forRead: "qa_data/bmp/big.bmp")
if success == false {
print("\(facSrc.lastErrorText!)")
return
}
success = facDest.open(forWrite: "c:/temp/qa_output/compressedBmp2.dat")
if success == false {
print("\(facDest.lastErrorText!)")
return
}
// Assuming numBlocks > 1
compress.firstChunk = true
compress.lastChunk = false
i = 0
while i < numBlocks {
fileBytes = facSrc.readBlock(blockIndex: i, blockSize: blockSize)
compressedBytes = compress.compressBytes(bData: fileBytes)
facDest.fileWrite(data: compressedBytes)
i = i + 1
compress.firstChunk = false
if i == (numBlocks - 1) {
compress.lastChunk = true
}
}
facSrc.fileClose()
facDest.fileClose()
print("Finished compressing file 2.")
}