PowerBuilder
PowerBuilder
File Read Blocks
Demonstrates how to read a file in fixed-size blocks (except for the very last block).Chilkat PowerBuilder Downloads
integer li_rc
long li_Success
oleobject loo_FacSrc
oleobject loo_FacDest
string ls_SrcPath
string ls_DestPath
long li_NumBlocks
long i
long li_BEqual
li_Success = 0
// 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.
loo_FacSrc = create oleobject
li_rc = loo_FacSrc.ConnectToNewObject("Chilkat.FileAccess")
if li_rc < 0 then
destroy loo_FacSrc
MessageBox("Error","Connecting to COM object failed")
return
end if
loo_FacDest = create oleobject
li_rc = loo_FacDest.ConnectToNewObject("Chilkat.FileAccess")
ls_SrcPath = "qa_data/xml/hamlet.xml"
ls_DestPath = "qa_output/hamletOut.xml"
li_Success = loo_FacSrc.OpenForRead(ls_SrcPath)
li_Success = loo_FacDest.OpenForWrite(ls_DestPath)
// Assuming success for the example..
// How many 1024-byte blocks? (Including 1 for the last partial block)
li_NumBlocks = loo_FacSrc.GetNumBlocks(1024)
i = 0
do while (i < li_NumBlocks)
loo_DataBlock = loo_FacSrc.ReadBlock(i,1024)
if loo_FacSrc.LastMethodSuccess <> 1 then
Write-Debug loo_FacSrc.LastErrorText
destroy loo_FacSrc
destroy loo_FacDest
return
end if
li_Success = loo_FacDest.FileWrite(loo_DataBlock)
if li_Success <> 1 then
Write-Debug loo_FacDest.LastErrorText
destroy loo_FacSrc
destroy loo_FacDest
return
end if
i = i + 1
loop
loo_FacSrc.FileClose()
loo_FacDest.FileClose()
li_BEqual = loo_FacSrc.FileContentsEqual(ls_SrcPath,ls_DestPath)
if li_BEqual <> 1 then
Write-Debug "Something went wrong!"
destroy loo_FacSrc
destroy loo_FacDest
return
end if
Write-Debug "File successfully copied by blocks."
destroy loo_FacSrc
destroy loo_FacDest