Go
Go
File Read Blocks
Demonstrates how to read a file in fixed-size blocks (except for the very last block).Chilkat Go Downloads
success := 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 []byte
facSrc := chilkat.NewFileAccess()
facDest := chilkat.NewFileAccess()
srcPath := "qa_data/xml/hamlet.xml"
destPath := "qa_output/hamletOut.xml"
success = facSrc.OpenForRead(srcPath)
success = facDest.OpenForWrite(destPath)
// Assuming success for the example..
// How many 1024-byte blocks? (Including 1 for the last partial block)
numBlocks := facSrc.GetNumBlocks(1024)
i := 0
for (i < numBlocks) {
dataBlock = facSrc.ReadBlock(i,1024)
if facSrc.LastMethodSuccess() != true {
fmt.Println(facSrc.LastErrorText())
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
return
}
success = facDest.FileWrite(dataBlock)
if success != true {
fmt.Println(facDest.LastErrorText())
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
return
}
i = i + 1
}
facSrc.FileClose()
facDest.FileClose()
bEqual := facSrc.FileContentsEqual(srcPath,destPath)
if bEqual != true {
fmt.Println("Something went wrong!")
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()
return
}
fmt.Println("File successfully copied by blocks.")
facSrc.DisposeFileAccess()
facDest.DisposeFileAccess()