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
(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_CkFileAccess.h> void ChilkatSample(void) { HCkByteData dataBlock; HCkFileAccess facSrc; HCkFileAccess facDest; const char *srcPath; const char *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 = CkFileAccess_Create(); facDest = CkFileAccess_Create(); srcPath = "qa_data/xml/hamlet.xml"; destPath = "qa_output/hamletOut.xml"; success = CkFileAccess_OpenForRead(facSrc,srcPath); success = CkFileAccess_OpenForWrite(facDest,destPath); // Assuming success for the example.. // How many 1024-byte blocks? (Including 1 for the last partial block) numBlocks = CkFileAccess_GetNumBlocks(facSrc,1024); i = 0; while ((i < numBlocks)) { success = CkFileAccess_ReadBlock(facSrc,i,1024,dataBlock); if (CkFileAccess_getLastMethodSuccess(facSrc) != TRUE) { printf("%s\n",CkFileAccess_lastErrorText(facSrc)); CkByteData_Dispose(dataBlock); CkFileAccess_Dispose(facSrc); CkFileAccess_Dispose(facDest); return; } success = CkFileAccess_FileWrite(facDest,dataBlock); if (success != TRUE) { printf("%s\n",CkFileAccess_lastErrorText(facDest)); CkByteData_Dispose(dataBlock); CkFileAccess_Dispose(facSrc); CkFileAccess_Dispose(facDest); return; } i = i + 1; } CkFileAccess_FileClose(facSrc); CkFileAccess_FileClose(facDest); bEqual = CkFileAccess_FileContentsEqual(facSrc,srcPath,destPath); if (bEqual != TRUE) { printf("Something went wrong!\n"); CkByteData_Dispose(dataBlock); CkFileAccess_Dispose(facSrc); CkFileAccess_Dispose(facDest); return; } printf("File successfully copied by blocks.\n"); CkByteData_Dispose(dataBlock); CkFileAccess_Dispose(facSrc); CkFileAccess_Dispose(facDest); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.