Sample code for 30+ languages & platforms
Swift

Compress Large Binary File in Blocks

See more Compression Examples

Compresses a large binary file in blocks.

Chilkat Swift Downloads

Swift

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.")

}