Sample code for 30+ languages & platforms
Swift

File Read Blocks

Demonstrates how to read a file in fixed-size blocks (except for the very last block).

Chilkat Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    // Demonstrates how to read a file in blocks,
    // which can be useful when uploading to cloud storage
    // services such as Azure, S3, Google, etc.

    // For this example, we're simply writing the blocks
    // to an output file, and then checking to see if the
    // resulting file contents equals the original file contents.

    var dataBlock: NSData

    let facSrc = CkoFileAccess()!
    let facDest = CkoFileAccess()!

    var srcPath: String? = "qa_data/xml/hamlet.xml"
    var destPath: String? = "qa_output/hamletOut.xml"

    success = facSrc.open(forRead: srcPath)
    success = facDest.open(forWrite: destPath)
    // Assuming success for the example..

    // How many 1024-byte blocks?  (Including 1 for the last partial block)
    var numBlocks: Int = facSrc.getNumBlocks(blockSize: 1024).intValue

    var i: Int = 0
    while (i < numBlocks) {
        dataBlock = facSrc.readBlock(blockIndex: i, blockSize: 1024)
        if facSrc.lastMethodSuccess != true {
            print("\(facSrc.lastErrorText!)")
            return
        }

        success = facDest.fileWrite(data: dataBlock)
        if success != true {
            print("\(facDest.lastErrorText!)")
            return
        }

        i = i + 1
    }

    facSrc.fileClose()
    facDest.fileClose()

    var bEqual: Bool = facSrc.fileContentsEqual(path1: srcPath, path2: destPath)
    if bEqual != true {
        print("Something went wrong!")
        return
    }

    print("File successfully copied by blocks.")

}