Swift
Swift
Compress Large Binary File in Blocks
See more Compression Examples
Compresses a large binary file in blocks.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
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
// Assuming numBlocks > 1
compress.firstChunk = true
compress.lastChunk = false
var i: Int = 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.")
}