導論:
本類別為了能存取 2 GB 以上檔案而設計,目前依需求僅能存取二進位檔 (Binary) ,採用 Visual Basic 相同基底 1 ,類別中會自動換算至 API 基底 0 相同之值,本類別仍在發展中,部分程式碼尚未充分測試完畢,為配合網友需求,先行上網,未來仍有可能依個人工作或研究上之需求進行調整
屬性:
項目 | 說明 |
AutoFlush | 設定是否將緩衝區之資料自動寫入檔案,預設為 True |
FileHandle | 傳回檔案代號 hFile |
FileName | 傳回檔案名稱 |
FileSize | 傳回檔案大小 |
IsOpen | 傳回檔案是否開啟中 |
方法:
項目 | 說明 |
CloseFile | 關閉檔案 |
Flush | 將緩衝區之資料自動寫入檔案 |
OpenFile | 開啟檔案 |
ReadBytes | 從檔案讀入位元組 |
SeekAbsolute | 設定檔案絕對指標位置 |
SeekRelative | 設定檔案相對指標位置 |
SetFileEnd | 寫入檔案終止符號 |
WriteBytes | 從檔案寫入位元組 |
開啟檔案:
OpenFile
引數 | 型別 | 說明 |
sFileName | String | 檔案名稱 |
dwFileAccess | Long | 檔案屬性 |
範例:
ApiFile.Open "C:\Temp\Test.txt"
ReadBytes ,傳回位元組陣列
引數 | 型別 | 說明 |
ByteCount | Long | 欲讀取位元組數 |
範例:
tBytes=ApiFile.ReadBytes(1024)
SeekAbsolute ,傳回位元組陣列絕對指標位置
引數 | 型別 | 說明 |
LowPos | Varinat | 絕對指標位置或低位元指標 |
HighPos | Varinat | 高位元指標,可省略 |
說明:
若省略高位元指標,則假定 LowPos 可能包含超過 2 GB 以上之指標,可直接指定 18,446,744,073,709,551,615 (18 EB 或 18,446,744,073 GB) ,在任何狀況下亦可以高低位元指標混合指定絕對指標位置
範例:
Debug.Print ApiFile.SeekAbsolute(1)
Debug.Print ApiFile.SeekAbsolute(CDec("18446744073709551615"))
WriteBytes
引數 | 型別 | 說明 |
DataBytes | Byte() | 位元組陣列 |
範例:
ApiFile.WriteBytes tBytes()
應用:
應用本類別之檔案操作程式模組
檔案複製:
myFileCopy ,傳回是否有錯誤發生
引數 | 型別 | 說明 |
strSource | String | 來源檔案字串 |
strTarget | String | 目標檔案字串 |
nByte | Long | 可省略,緩衝區大小,預設為 32 KB |
bResume | Boolean | 可省略,是否續傳,預設為 False |
nGetSize | Variant | 可省略,目前已取得檔案大小 |
nFileSize | Variant | 可省略,來源檔案大小 |
bStop | Variant | 可省略,是否停止執行 |
說明:
nGetSize 、 nFileSize 、 bStop 三個參數為傳址呼叫,可配合對話盒控制處理進度說明,若透過網路芳鄰傳遞檔案,當伺服主機關機或發生錯誤,會傳回錯誤訊息
範例:
Private UrlGetSize Private UrlFileSize Private StartTime As Date Private bStop As Variant |
Private Sub GetWNetFile(Optional
hAction) Dim WNetFile As New cApiFile ... StartTime = Now - 1 / 86400 mErrorCode = myFileCopy(sFile, oFile, , bResume, UrlGetSize, UrlFileSize, bStop) ... End Sub |
Private Sub tmrUpdate_Timer() Static oldGetSize, oldTime ... If UrlFileSize = 0 Then |