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