在VC中,大多數情況對文件的操作都使用系統提供的 API 函數,但有的函數我們不是很熟悉,以下提供一些文件操作 API 函數介紹:
一般文件操作 API
CreateFile
打開文件
要對文件進行讀寫等操作,首先必須獲得文件句柄,通過該函數可以獲得文件句柄,該函數是通向文件世界的大門。
ReadFile
從文件中讀取字節信息。
在打開文件獲得了文件句柄之後,則可以通過該函數讀取數據。
WriteFile
向文件寫入字節信息。
同樣可以將文件句柄傳給該函數,從而實現對文件數據的寫入。
CloseHandle
關閉文件句柄。
打開門之後,自然要記得關上。
GetFileTime
獲取文件時間。
有三個文件時間可供獲取:創建時間、最後訪問時間、最後寫時間。
該函數同樣需要文件句柄作為入口參數。
GetFileSize
獲取文件大小。
由於文件大小可以高達上數G(1G需要30位),因此一個32位的雙字節類型無法對其精確表達,因此返回碼表示低32位,還有一個出口參數可以傳出高32位。
該函數同樣需要文件句柄作為入口參數。
GetFileAttributes
獲取文件屬性。
可以獲取文件的存檔、只讀、系統、隱藏等屬性。
該函數只需一個文件路徑作為參數。
SetFileAttributes
設置文件屬性。
能獲取,自然也應該能設置。
可以設置文件的存檔、只讀、系統、隱藏等屬性。
該函數只需一個文件路徑作為參數。
GetFileInformationByHandle
獲取所有文件信息
該函數能夠獲取上面所有函數所能夠獲取的信息,如大小、屬性等,同時還包括一些其他地方無法獲取的信息,比如:文件卷標、索引和鏈接信息。
該函數需要文件句柄作為入口參數。
GetFullPathName
獲取文件路徑,該函數獲取文件的完整路徑名。
需要提醒的是:只有當該文件在當前目錄下,結果才正確。如果要得到真正的路徑。應該用GetModuleFileName函數。
CopyFile
復制文件
注意:只能復制文件,而不能復制目錄
MoveFileEx
移動文件
既可以移動文件,也可以移動目錄,但不能跨越盤符。(Window2000下設置移動標志可以實現跨越盤符操作)
DeleteFile
刪除文件
GetTempPath
獲取Windows臨時目錄路徑
GetTempFileName
在Windows臨時目錄路徑下創建一個唯一的臨時文件
SetFilePoint
移動文件指針。
該函數用於對文件進行高級讀寫操作時。
文件的鎖定和解鎖
LockFile
UnlockFile
LockFileEx
UnlockFileEx
以上四個函數用於對文件進行鎖定和解鎖。這樣可以實現文件的異步操作。可同時對文件的不同部分進行各自的操作。
文件的壓縮和解壓縮
LZOpenFile
打開壓縮文件以讀取
LZSeek
查找壓縮文件中的一個位置
LZRead
讀一個壓縮文件
LZClose
關閉一個壓縮文件
LZCopy
復制壓縮文件並在處理過程中展開
GetExpandedName
從壓縮文件中返回文件名稱。
以上六個函數為32位 API 中的一個小擴展庫,文件壓縮擴展庫中的函數。文件壓縮可以用命令 compress 創建。
文件內核對象
32位 API 提供一個稱為文件映像的特性,它允許將文件直接映射為一個應用的虛擬內存空間,這一技術可用於簡化和加速文件訪問。
CreateFileMapping
創建和命名映射
MapViewOfFile
把文件映射裝載如內存
UnmapViewOfFile
釋放視圖並把變化寫回文件
FlushViewOfFile
將視圖的變化刷新寫入磁盤
希望通過以上幾個常用的 API 函數,能快速的提高文件操作過程函數的編寫。