Delphi中的檔案操作

來源:互聯網
上載者:User
 檔案操作

by clin003 at 20070528 from:http://blog.csdn.net/clin003

1.4 Delphi的檔案管理標準流程 

      根據功能我們把標準流程劃分為十一類進行介紹。 

1.4.1 檔案的開啟與關閉 

AssignFile : 把一個外部檔案名稱和一個檔案變數相關聯

Reset :開啟一個存在的檔案

Rewrite :建立並開啟一個新檔案(或覆蓋原有檔案)

Append : 以添加方式開啟一個檔案(只適用於文字檔)

CloseFile : 關閉一個開啟的檔案

FileOpen :開啟一個特定的檔案並返迴文件控制代碼

FileCreate :建立一個給定檔案名稱的檔案並返迴文件控制代碼

FileClose : 關閉一個特定控制代碼的檔案 

       後邊三個檔案主要供系統內部使用,在檔案複製的編程中也往往會用到。它們操作的對象是檔案控制代碼而不是檔案變數。 

1.4.2 檔案定位 

Seek : 把檔案當前位置移到指定部分

FilePos : 返迴文件的當前位置

Eoln : 返回行結束標誌

EOF : 返迴文件結束標誌

FileSeek : 改變當前檔案指標的位置

       Seek與FileSeek的區別是:1. Seek僅用於記錄檔案;2. FileSeek的參數是檔案控制代碼、位移量、起始位置。其中起始位置有檔案首、當前位置、檔案尾三種選擇。Seek的參數是檔案變數、位移量,位移量是從檔案首開始定位的。3. FileSeek的位移量以位元組數來計算,而Seek是根據記錄號進行移動。

       Seek、FilePos僅用於記錄檔案。但任何檔案都可以看作是基於位元組的記錄檔案。下面一段程式表示了它們的用法。

{ 該例子的設計介面為一個包含TOpenDialog組件的表單。} 

uses Dialogs;

var

f: file of Byte;
size: Longint;
S: String;
y: Integer;
begin
if OpenDialog1.Execute then
begin

AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
//   form1.Canvas.TextOut();   設定在框體的某一地區輸出字元資訊。
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);  //Seek : 把檔案當前位置移到指定部分
S := 'Position is now ' + IntToStr(FilePos(f));
//filepos  ;FilePos : 返迴文件的當前位置
Canvas.TextOut(5, y, S);
CloseFile(f);
end;
 end;
 {//下面是要設定表單地區為我們想要說的話  
                  HRGN   hRgn;  
                  BeginPath(Canvas->Handle);
                  SetBkMode(Canvas->Handle,TRANSPARENT);  
                  Canvas->Font->Name   =   "楷體_GB2312";  
                  Canvas->Font->Size   =   66;  
                  Canvas->TextOut(1,1,   "貴州師範大學電腦愛好者協會");
                  EndPath(Canvas->Handle);  
                  hRgn   =   PathToRegion(Canvas->Handle);
                  SetWindowRgn(Handle,hRgn,true);
                  DeleteObject(hRgn);}

-------------------------------------------------------------
1.4.3 檔案刪除與截斷 

Erase : 刪除一個存在的檔案

DeleteFile : 刪除一個檔案

Truncate : 從檔案當前位置將檔案截斷 

         Erase與DeleteFile的區別是:Erase以檔案變數為參數,當檔案不能刪除時引起一個異常;DeleteFile以檔案名稱為參數,當檔案不存在或不能刪除時返回False,而並不引起一個異常。 

1.4.4 檔案名稱操作 

Rename :檔案更名,以檔案變數為操作對象

RenameFile :檔案更名,參數為檔案的原名和新名

ChangeFileExt :改變副檔名

ExpandFileName :返迴文件全路徑名

ExtractFileExt :返迴文件副檔名

ExtractFileName :從全路徑名中返迴文件名

ExtractFilePath :返回特定檔案的路徑 

1.4.5 檔案屬性 

FileGetAttr :返迴文件屬性

FileSetAttr :設定檔案屬性 

1.4.6 檔案狀態 

FileSize :返迴文件對象大小

IOResult :返回上一次I/O操作的狀態

FileExists :檢測檔案是否存在 

1.4.7 檔案日期 

DateTimeToFileDate :把Delphi日期格式轉換為DOS日期格式

FileDateToDateTime :把DOS日期格式轉換為Delphi日期格式

FileGetDate :返迴文件的DOS日期時間戳記

FileSetDate :設定檔案的DOS日期時間戳記 

1.4.8 檔案讀寫 

Read,Readln :從文本或記錄檔案中讀取變數

Write :將指定變數寫入文本或記錄檔案

Writeln :將指定變數寫入文字檔並寫入一個行結束標誌

FileRead :從一個指定檔案中讀取變數

FileWrite :向指定檔案寫入資料 

FileRead和FileWrite都是以檔案控制代碼為操作對象,主要供系統內部使用。 

1.4.9 目錄操作 

MkDir :建立目前的目錄的子目錄

ChDir :改變目前的目錄

GetDir :返回特定磁碟的目前的目錄

RmDir :刪除一個空子目錄 

1.4.10 磁碟操作 

DiskFree :返回磁碟自由空間

DiskSize :返回特定磁碟的大小 

1.4.11 檔案尋找

FileSearch :尋找目錄中是否存在某一特定檔案

FindFirst :在目錄中尋找與給定檔案名稱(可以包含匹配符)及屬性集相匹配 的第一個檔案

FindNext :返回合格下一個檔案

FindClose :中止一個FindFirst / FindNext序列 

        有關檔案管理標準流程/函數的更詳細資料,請查閱Delphi相關的Help主題。以上的大部分過程在後面都有應用執行個體,讀者可以從中體會其用法。
by clin003 at 20070528 from:http://blog.csdn.net/clin003
        在Delphi的線上說明Help系統中把有關檔案的過程/函數分為兩個主題:I/O Routine和File_Management Routine。前者大部分以檔案變數為操作對象,而後者大部分以檔案名稱或檔案控制代碼為操作對象。這裡為了方便讀者的使用,我們按功能重新進行了分類。在下一節中主要應用I/O Routine主題下的過程,而在第四節的綜合舉例中主要應用File_Management Routine主題下的過程。

       另外,Windows提供了許多有關檔案管理的API函數。雖然在一般情況下,利用Delphi提供的函數已足夠解決問題,但有時候仍然需要使用Windows API。在(6.4.4.2)中我們就用到了Windows API函數GetDriveType。有關Windows API函數的情況,請讀者參閱相關的資料,這裡不再進行介紹。
-------------------------------------------------------------

//////////////顯示目前的目錄代碼///////////////////

通過建立一個返回字串的函數GetcurrentDirectory(),來獲得目前使用者使用的目錄。
該函數的名稱與Api函數GetCurrentDirectory()的名稱相同,但是定義參數及傳回值不同。Api函數的具體定義如下:
Dword GetCurrentDirectory(
    Dword nBufferLength,//以字元表示的目錄緩衝的大小
    LPTSTR lpBuffer        //目前的目錄的緩衝地址
}

實現步驟:
建立一個應用程式。
在應用程式中法制一個編輯框Edit1和一個button1.
開啟單元檔案unit1,在單元檔案中定義返回字串值的函數GetcurrentDirectory。
為該函數輸入合適的代碼,並正確使用api函數getcurrentDirectory及getMem()及freeMem()等函數。
返回到編輯框口中,在按鈕上面雙擊滑鼠,添加onchick事件,添加代碼,將GetcurrentDirectory函數的傳回值賦值給編輯框edit1.
儲存應用程式到,
測試程式。

程式部分代碼:------------------------------------
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls;

  function GetCurrentDirectory:String;
  var
    nBufferLength:DWORD;
    lpBuffer      :PChar;
  begin
    nBufferLength:=MAX_PATH+1;
    result:='';
    GetMem(lpBuffer,nBufferLength);
    try
      if Windows.GetCurrentDirectory(nBufferLength,lpBuffer)>0 then
        Result:=lpBuffer;

      finally
        freeMem(lpBuffer);
      end;
   end;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.