BCB 內建文件操作函數分類詳解
BCB 提供三類文件操作函數,支援 AnsiString 使用方便:
一、文件名函數 (路徑、副檔名、目錄、磁碟機解析)
| 函數 | 功能 | 範例結果 |
| ExpandFileName | 完整路徑 | C:\MyBCB\Sample1.EXE |
| ExtractFileExt | 副檔名 | .exe |
| ExtractFileName | 純檔名 | SOL.EXE |
| ExtractFilePath | 路徑含反斜線 | Winnt\ |
| ExtractFileDir | 目錄名 (無反斜線) | Winnt |
| ExtractFileDrive | 磁碟機 | c: |
| ChangeFileExt | 變更副檔名 (字串操作) | c:\winnt\SOL.OOO |
| ExpandUNCFileName | 網路完整路徑 | \\NT40\WINNT\SOL.EXE |
| ExtractRelativePath | 相對路徑 | ..\asm\dz.asm |
| ExtractShortPathName | 8.3 短檔名 | E:\Progra~1\dualwh~1\4dmain.exe |
| MatchesMask | 萬用字元比對 | true/false |
二、文件管理函數 (目錄建立/刪除、磁碟空間、檔案屬性/日期、當前目錄)
| 函數 | 功能 | 備註 |
| CreateDir | 建立目錄 | 成功回傳 true |
| DeleteFile | 刪除檔案 | 成功回傳 true |
| DirectoryExists | 目錄是否存在 | 回傳 bool |
| DiskFree | 剩餘空間 (Bytes) | 參數 0=當前, 1=A, 2=B... 無效回傳 -1 |
| DiskSize | 總容量 (Bytes) | 同上 |
| FileExists | 檔案是否存在 | 回傳 bool |
| FileGetAttr | 取得屬性 | 位元組合: faReadOnly=1, faHidden=2, faSysFile=4, faDirectory=16, faArchive=32 |
| FileGetDate | 建立時間 (秒數 from 1970) | 需 FileOpen 取得 Handle |
| GetCurrentDir | 取得當前目錄 | |
| RemoveDir | 刪除目錄 | 成功回傳 true |
| SetCurrentDir | 設定當前目錄 | 成功回傳 true |
三、文件 I/O 函數 (底層讀寫、定位、建立)
| 函數 | 功能 | 參數/回傳 |
| FileOpen | 開啟檔案 | Mode: fmOpenRead=0, fmOpenWrite=1, fmOpenReadWrite=2; Share: fmShareExclusive=16, fmShareDenyWrite=32, fmShareDenyRead=48, fmShareDenyNone=64; 成功回傳 Handle, 失敗 -1 |
| FileClose | 關閉 Handle | |
| FileRead | 讀取資料 | 回傳實際讀取位元組數 |
| FileSeek | 移動指標 | Origin: 0=檔頭, 1=目前, 2=檔尾; 回傳新位置 |
| FileWrite | 寫入資料 | 回傳實際寫入位元組數 |
| FileCreate | 建立檔案 | 成功回傳 Handle |
使用範例
// 讀取檔案前 400 位元組
int h = FileOpen("C:\\autoexec.bat", fmOpenRead | fmShareDenyNone);
char buf[400];
FileRead(h, buf, 400);
FileClose(h);
// 取得檔案長度
int len = FileSeek(h, 0, 2); // 移至檔尾位置即為長度
優點
- 原生支援
AnsiString,無需字串轉換。
- 封裝 Win32 API,錯誤處理一致 (失敗回傳 -1/false)。
- 適合 BCB 專案內部使用,跨平台潛力 (Kylix 相容)。