Windows檔案操作的API函數[轉載]在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
將視圖的變化重新整理寫入磁碟 PathFileExists檔案是否存在