檔案操作是程式開發的基礎。C++ Builder 提供多種層級的檔案操作方式,本文系統整理五大類:
核心結構 FILE (定義於 stdio.h) 包含緩衝區指標、檔案描述符、旗標等。常用函數:
| 函數 | 功能 |
|---|---|
| fopen() | 開啟檔案流 |
| fclose() | 關閉檔案流 |
| fputc/fgetc | 寫/讀單一字元 |
| fputs/fgets | 寫/讀字串 |
| fprintf/fscanf | 格式化輸出/輸入 |
| fseek/ftell | 定位/取得位置 |
| fread/fwrite | 二進位區塊讀寫 |
範例:FILE *fp = fopen("test.txt", "w"); fprintf(fp, "Hello"); fclose(fp);
使用整數檔案控制代碼 (handle),函數有 open/close/read/write/lseek 等,無緩衝,直接對作業系統發出呼叫,效率較高但使用較繁瑣。
包含 fstream.h,使用 ifstream (輸入)、ofstream (輸出)、fstream (雙向)。支援 << / >> 運算子,型別安全,支援使用者定義型別多載。範例:ofstream out("data.bin", ios::binary); out.write((char*)&struct, sizeof(struct));
核心函數:CreateFile、ReadFile、WriteFile、CloseHandle、SetFilePointer、GetFileSize、CopyFile、MoveFile、DeleteFile、FindFirstFile/FindNextFile 遍歷目錄。支援安全性屬性、重疊 I/O、記憶體對應檔案等進階功能。
C++ Builder 封裝了大量路徑、檔案管理、I/O 常用函數,支援 AnsiString,跨平台性較好。主要分類:
ExtractFilePath/Name/Ext/Drive/Dir、ChangeFileExt、ExpandFileName/UNCFileName、ExtractRelativePath/ShortPathName、MatchesMask。FileExists、DirectoryExists、ForceDirectories、DeleteFile、RenameFile、FileCopy、FileAge、FileGetAttr/SetAttr、DiskFree/Space。FileOpen/Create/Read/Write/Seek/Close (使用整數 Handle),以及 TFileStream 類別 (RAII 風格,支援流操作)。範例:TFileStream *fs = new TFileStream("test.dat", fmCreate); fs->WriteBuffer(&data, sizeof(data)); delete fs;
TIniFile / TMemIniFile 讀寫區段/鍵值。TRegistry 封裝 RegOpenKey/Query/SetValue 等 API。TResourceStream 讀取 EXE 內嵌資源 (位圖、圖示、字串表等)。選擇建議:一般應用優先使用 VCL/RTL 函數或 TFileStream;需精細控制或高效能時用 WinAPI;跨平台或標準 C++ 專案用 iostream。