原文地址 http://read.newbooks.com.cn/info/126910.html
WINAPI提供了兩種檔案操作函數,一組是為了和16位程式相容,這種函數比較簡單;而另一種是專門為32位程式設計,在使用時就顯得麻煩些,下面我就把這兩組函數一一介紹:
一、和16位程式相容的一組函數
| 函數 |
說明 |
對應BCB庫函數 |
| _lopen() |
開啟檔案 |
FileOpen() |
| _lclose() |
關閉檔案 |
FileClose() |
| _lread() |
讀檔案 |
FileRead() |
| _lwrite() |
寫檔案 |
FileWrite() |
| _llseek() |
檔案定位 |
FileSeek() |
| _lcreat() |
建立檔案 |
FileCreate() |
⑴_lopen
原型:HFILE _lopen(
LPCSTR lpPathName, // 檔案名稱
int iReadWrite //檔案存取方式
);
功能:開啟檔案,成功返回其控制代碼,與此類似的還有個OpenFile()函數,可自行查閱協助檔案。
參數說明:lpPathName是要開啟的檔案名稱,iReadWrite是檔案存取方式,主要有3種方式:
- OF_READ:以唯讀方式開啟
- OF_READWRITE:以讀寫方式開啟
- OF_WRITE:以唯寫方式開啟
還有如 OF_SHARE_COMPAT 等屬性,由於不太常用,為裡就不一一介紹了。
⑵_lclose()
原型:HFILE _lclose( HFILE hFile);
功能:關閉檔案,成功返回0
參數說明:hFile:要關閉的控制代碼
⑶_lread()
原型:UINT _lread( HFILE hFile, // 檔案控制代碼
LPVOID lpBuffer, // 儲存資料的緩衝區
UINT uBytes // 要讀取的長度
);
功能:讀檔案,返回實際讀取的字元數,與此類似的還有個_hread()函數,可自行查閱協助檔案。
⑷_lwrite()
原型:UINT _lwrite( HFILE hFile, // 檔案控制代碼
LPCSTR lpBuffer, // 儲存資料的緩衝區
UINT uBytes // 要寫的長度
);
功能:寫檔案,返回實際寫的字元數,與此類似的還有個_hwrite()函數,可自行查閱協助檔案。
⑸_llseek()
原型:LONG _llseek( HFILE hFile, // 檔案控制代碼
LONG lOffset, // 移動的量
int iOrigin // 移動的基準位置
);
功能:移動檔案的讀寫位置,成功返回移動後的檔案讀寫位置
參數說明:iOrigin的取值是以下三種情況之一:
- FILE_BEGIN:檔案頭部
- FILE_CURRENT:檔案當前位置
- FILE_END:檔案尾部
⑹_lcreat()
原型:HFILE _lcreat( LPCSTR lpPathName, //要建立的檔案名稱
int iAttribute // 檔案屬性
);
功能:建立檔案,成功返回其控制代碼
參數說明:檔案屬性是以下值的和:
- 0:普通檔案
- 1:唯讀檔案
- 2:隱含檔案
- 4:系統檔案
這幾個函數的用法和所列的BCB庫函數差不多,建議使用BCB的庫函數。可參閱前文基於BCB庫函數的檔案操作。
二、32位程式專用檔案操作函數
WINAPI中還有一組32位程式專用的檔案操作函數,這也是M$推薦使用的函數,但我還是推薦使用BCB的庫函數,除非功能不足,由於此類函數眾多,我就只對重要的作簡要介紹,如果真需要時可查詢協助系統。
| 函數 |
功能 |
| CreateFile() |
建立或開啟一個檔案 |
| CopyFile(),CopyFileEx() |
拷貝檔案 |
| CreateDirectory(),CreateDirectoryEX() |
建立目錄 |
| DeleteFile() |
刪除檔案 |
| GetDriveType() |
擷取磁碟機類型 |
| GetFileAttributes(),GetFileAttributesEx() |
擷取檔案屬性 |
| GetFileSize() |
擷取檔案位元組大小 |
| GetFullPathName() |
取得檔案全路徑檔案名稱 |
| GetShortPathName() |
取得檔案8.3格式全檔案名稱 |
| GetTempFileName() |
產生一個臨時檔案名稱 |
| GetTempPath() |
取臨時檔案名稱的路徑 |
| LockFile(),LockFileEx() |
鎖檔案 |
| MoveFileEx() |
移動或更名檔案 |
| ReadFile(),ReadFileEx() |
讀檔案 |
| SearchPath() |
搜尋檔案 |
| SetFileAttributes() |
設定檔案屬性 |
| SetFilePoint() |
設定檔案讀寫位置 |
| UnLockFile(),UnLockFileEx() |
對檔案解除鎖定 |
| WriteFile(),WriteFileEx() |
寫檔案 |