Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Unicode C) File Read BlocksDemonstrates how to read a file in fixed-size blocks (except for the very last block).
#include <C_CkByteData.h> #include <C_CkFileAccessW.h> void ChilkatSample(void) { HCkByteData dataBlock; HCkFileAccessW facSrc; HCkFileAccessW facDest; const wchar_t *srcPath; const wchar_t *destPath; BOOL success; int numBlocks; int i; BOOL bEqual; // 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. dataBlock = CkByteData_Create(); facSrc = CkFileAccessW_Create(); facDest = CkFileAccessW_Create(); srcPath = L"qa_data/xml/hamlet.xml"; destPath = L"qa_output/hamletOut.xml"; success = CkFileAccessW_OpenForRead(facSrc,srcPath); success = CkFileAccessW_OpenForWrite(facDest,destPath); // Assuming success for the example.. // How many 1024-byte blocks? (Including 1 for the last partial block) numBlocks = CkFileAccessW_GetNumBlocks(facSrc,1024); i = 0; while ((i < numBlocks)) { success = CkFileAccessW_ReadBlock(facSrc,i,1024,dataBlock); if (CkFileAccessW_getLastMethodSuccess(facSrc) != TRUE) { wprintf(L"%s\n",CkFileAccessW_lastErrorText(facSrc)); CkByteData_Dispose(dataBlock); CkFileAccessW_Dispose(facSrc); CkFileAccessW_Dispose(facDest); return; } success = CkFileAccessW_FileWrite(facDest,dataBlock); if (success != TRUE) { wprintf(L"%s\n",CkFileAccessW_lastErrorText(facDest)); CkByteData_Dispose(dataBlock); CkFileAccessW_Dispose(facSrc); CkFileAccessW_Dispose(facDest); return; } i = i + 1; } CkFileAccessW_FileClose(facSrc); CkFileAccessW_FileClose(facDest); bEqual = CkFileAccessW_FileContentsEqual(facSrc,srcPath,destPath); if (bEqual != TRUE) { wprintf(L"Something went wrong!\n"); CkByteData_Dispose(dataBlock); CkFileAccessW_Dispose(facSrc); CkFileAccessW_Dispose(facDest); return; } wprintf(L"File successfully copied by blocks.\n"); CkByteData_Dispose(dataBlock); CkFileAccessW_Dispose(facSrc); CkFileAccessW_Dispose(facDest); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.