Swift
Swift
File Read Blocks
Demonstrates how to read a file in fixed-size blocks (except for the very last block).Chilkat Swift Downloads
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.")
}