Sample code for 30+ languages & platforms
PowerShell

File Read Blocks

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

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$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.

$facSrc = New-Object Chilkat.FileAccess
$facDest = New-Object Chilkat.FileAccess

$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
while (($i -lt $numBlocks)) {
    $dataBlock = $facSrc.ReadBlock($i,1024)
    if ($facSrc.LastMethodSuccess -ne $true) {
        $($facSrc.LastErrorText)
        exit
    }

    $success = $facDest.FileWrite($dataBlock)
    if ($success -ne $true) {
        $($facDest.LastErrorText)
        exit
    }

    $i = $i + 1
}

$facSrc.FileClose()
$facDest.FileClose()

$bEqual = $facSrc.FileContentsEqual($srcPath,$destPath)
if ($bEqual -ne $true) {
    $("Something went wrong!")
    exit
}

$("File successfully copied by blocks.")