基於WINAPI的檔案操作

來源:互聯網
上載者:User

原文地址 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() 寫檔案

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.