Sample code for 30+ languages & platforms
PowerBuilder

File Read Blocks

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

Chilkat PowerBuilder Downloads

PowerBuilder
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