Visual FoxPro
Visual FoxPro
File Read Blocks
Demonstrates how to read a file in fixed-size blocks (except for the very last block).Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loDataBlock
LOCAL loFacSrc
LOCAL loFacDest
LOCAL lcSrcPath
LOCAL lcDestPath
LOCAL lnNumBlocks
LOCAL i
LOCAL lnBEqual
lnSuccess = 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.
loFacSrc = CreateObject('Chilkat.FileAccess')
loFacDest = CreateObject('Chilkat.FileAccess')
lcSrcPath = "qa_data/xml/hamlet.xml"
lcDestPath = "qa_output/hamletOut.xml"
lnSuccess = loFacSrc.OpenForRead(lcSrcPath)
lnSuccess = loFacDest.OpenForWrite(lcDestPath)
* Assuming success for the example..
* How many 1024-byte blocks? (Including 1 for the last partial block)
lnNumBlocks = loFacSrc.GetNumBlocks(1024)
i = 0
DO WHILE (i < lnNumBlocks)
loDataBlock = loFacSrc.ReadBlock(i,1024)
IF (loFacSrc.LastMethodSuccess <> 1) THEN
? loFacSrc.LastErrorText
RELEASE loFacSrc
RELEASE loFacDest
CANCEL
ENDIF
lnSuccess = loFacDest.FileWrite(loDataBlock)
IF (lnSuccess <> 1) THEN
? loFacDest.LastErrorText
RELEASE loFacSrc
RELEASE loFacDest
CANCEL
ENDIF
i = i + 1
ENDDO
loFacSrc.FileClose()
loFacDest.FileClose()
lnBEqual = loFacSrc.FileContentsEqual(lcSrcPath,lcDestPath)
IF (lnBEqual <> 1) THEN
? "Something went wrong!"
RELEASE loFacSrc
RELEASE loFacDest
CANCEL
ENDIF
? "File successfully copied by blocks."
RELEASE loFacSrc
RELEASE loFacDest