Swift
Swift
Decompress Large Binary File in Blocks
See more Compression Examples
Decompresses a large binary file in blocks.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let facSrc = CkoFileAccess()!
let facDest = CkoFileAccess()!
// Open a previously compressed file for decompressing.
// See Compress Large File in Blocks
success = facSrc.open(forRead: "c:/temp/qa_output/compressedBmp.dat")
if success == false {
print("\(facSrc.lastErrorText!)")
return
}
// If we compress in 32K chunks, find out how many blocks there will be.
var blockSize: Int = 32768
var numBlocks: Int = facSrc.getNumBlocks(blockSize: blockSize).intValue
// Open an output file for the decompressed data.
success = facDest.open(forWrite: "c:/temp/qa_output/decompressed.bmp")
if success == false {
print("\(facDest.lastErrorText!)")
return
}
let compress = CkoCompression()!
compress.algorithm = "deflate"
var decompressedBytes: NSData
var compressedBytes: NSData
// Assuming numBlocks > 1
compress.firstChunk = true
compress.lastChunk = false
var i: Int = 0
while i < numBlocks {
compressedBytes = facSrc.readBlock(blockIndex: i, blockSize: blockSize)
decompressedBytes = compress.decompressBytes(bData: compressedBytes)
facDest.fileWrite(data: decompressedBytes)
i = i + 1
compress.firstChunk = false
if i == (numBlocks - 1) {
compress.lastChunk = true
}
}
facSrc.fileClose()
facDest.fileClose()
print("Finished decompressing file.")
}