Delphi文件操作函數


文件是同一種類型元素的有序集合,是內存與外設之間傳輸數據的渠道。文件的本質是一個數據流,所有的文件實際上是一串二進制序列。
文件管理包括:1、文件操作。2、目錄操作。3、驅動器操作。三部分。

1、常見文件操作函數和過程。
1.1、AssignFile過程
作用:將一個外部文件的文件名與一個File類型的變量關聯,並對變量進行初始化。
原型:procedure AssignFile(var F; FileName: String);
F:一個File類型的變量,可以是任何數據類型。
FileName:外部文件的文件名。
1.2、FileExists函數
作用:用於測試指定文件名的文件是否存在。
原型:function FileExists(const FileName: String): Boolean;
FileName:文件名。字符串類型。
注意:如果文件存在,返回True;否則,返回False。
1.3、Append過程
作用:為在一個已經存在的文件末尾添加文本做好准備工作。文件是只寫方式打開的。
原型:procedure Append(var F: Text);
F: 一個TextFile類型變量。
注意:這是一個對文本類型文件操作的過程。其中變量F必須和外部文件關聯。如果F沒有與外部文件關聯,將拋出異常。如果F已經處於打開狀態,則過程會關閉F並重新打開。文件指針位置將被設置在文件末尾。
1.4、Reset過程
作用:對於文本文件,Reset過程將以只讀方式打開文件。對於類型文件和無類型文件,Reset過程將以可讀寫方式打開文件。
原型:procedure Reset(var F [: File; RecSize: Word ] );
F:File類型變量,可以是任何文件類型。
RecSize:文件的大小。它是一個可選的選項,只有當F為無類型文件時才可以被指定。如果F為無類型文件,則RecSize指定了在數據傳輸過程中使用的記錄的大小。如果參數RecSize被省略了,則默認的記錄大小為128字節。
注意:當該過程打開文件時,如果文件不存在則產生異常。如果文件已經打開了,則先關閉文件,然后重新打開,並將文件指針放到文件開頭處。默認的文件模式 (FileMode)為2,即可讀寫模式。如果文件模式在調用Reset過程前都還未改變,則嘗試打開一個只讀文件會失敗。當調用Reset過程后,如果文件為空,則Eof函數返回True,否則返回False。
1.5、Rewrite過程
作用:對於一個已存在的文件,此操作將使文件被覆蓋。對於一個不存在的文件,將創建並打開文件。對於一個已打開的文件,則關閉文件,並重新創建一個新的文件(覆蓋原有的)。文件指針也被設置到空文件的開頭處。
原型:procedure Rewrite(var F: File [; Recsize: Word ] );
F:File類型變量,可以是任何文件類型。
RecSize:文件的大小。它是一個可選的選項,只有當F為無類型文件時才可以被指定。如果F為無類型文件,則RecSize指定了在數據傳輸過程中使用的記錄的大小。如果參數RecSize被省略了,則默認的記錄大小為128字節。
注意:如果F被指定為一個空的文件名,如:AssignFile(F, ‘’),那么當Rewrite過程被調用時,F為標准的輸出文件。如果F是文本文件,則F為只寫模式。當調用Rewrite過程后,Eof(F)將總是為True。
1.6、Flush函數
作用:用於清空以輸出方式打開的文本緩沖區,保證所有寫入的字符全部寫入外部文件。
原型:function Flush(var t: Text): Integer;
F:F是文本類型變量。
注意:本函數只使用於文本文件的處理。當操作成功時,Flush返回0,否則,它將返回錯誤代碼。當使用Rewrite過程或者Append過程打開一個文本文件用來輸出時。Flush函數用於清空文件的緩沖區。這個過程保證了緩沖區的中的所有字符都已經寫入外部文件中。對於因為輸入而打開的文件,Flush函數不起任何作用。
1.7、Read過程
作用:用於從一個文件中讀取數據。
原型:procedure Read(F , V1 [, V2,...,Vn ] );
procedure Read( [ var F: Text; ] V1 [, V2,...,Vn ] );
F:是一個文件變量。
V1……Vn:用於存儲從文件中讀取的數據。
注意:在Delphi中,Read過程有兩種語法,如果參數F是一個有類型文件,過程Read讀取一組數據到一個變量中。如果參數F是一個文本文件變量,過程Read讀取一個或多個值到一個或多個變量中。
1.8、ReadLn過程
作用:用於從文件中讀取一行文本。
原型:procedure ReadLn([ var F: Text; ] V1 [, V2, ...,Vn ]);
V:文本文件變量。
V1……V2:用於存儲讀取的文本。
注意:在Delphi中,ReadLn過程用於讀取文本文件的一行文本,並跳至該文本文件的下一行。
1.9、Write過程
作用:用於向一個文本文件寫入數據。
原型:procedure Write( [var F: Text; ] P1 [ , P2,..., Pn] ); //文本類型文件
procedure Write(F, V1,…Vn); //有類型文件
F:文本文件比變量。
P1……Pn:代表向文件中寫入的數據。
注意:對於文本文件來說,寫入的內容應String類型變量。對於有類型文件來說,寫入的必須是某種特定類型的數據。
1.10、WriteLn過程
作用:用來向文本文件中添加一行內容,即在寫入內容后面有回車換行符。
原型:procedure WriteLn([ var F: Text; ] P1 [, P2, ...,Pn ] );
F:文本文件比變量。
1.11、Eof函數
作用:用於判斷是否到了文件的結尾。
原型:function Eof(var F): Boolean; //用於類型文件和無類型文件
function Eof [ (var F: Text) ]: Boolean; //用於文本文件
典型應用:如果文件為空或當前位置在最后一個字符后,則返回True;否則,返回False。
1.12、Eoln函數
作用:測試文件指針是否指向一行的最后,適用於文本文件。如果當前的位置在一行的末尾或Eof(F)函數返回的是True,則Eoln返回的是True;否則返回False。
原型:function Eoln [(var F: Text) ]: Boolean;
典型應用:在程序中對文本文件進行操作時,有時需要限制數據的讀取。如果只讀取一行中某個位置到一行結束的部分數據。程序中可以使用Eoln函數進行判斷。
1.13、CloseFile過程
作用:用來關閉文件,同事將文件記錄盤上的文件與相關文件變量斷開聯系。
原型:procedure CloseFile(var F);
F:一個文件類型變量
注意:通常來說,CloseFile過程與try…finally…模塊結合使用。
1.14、DeleteFile函數
作用:將一個文件從記錄盤上刪除。
原型:function DeleteFile(const FileName: string): Boolean;
注意:如果文件不存在或無法刪除,返回False;否則,返回True。
1.15、Erase過程
作用:用於刪除一個已存在的文件。
原型:procedure Erase(var F);
注意:如果文件被打開,先關閉文件再執行刪除操作。
1.16、FileGetAttr函數
作用:用於獲取一個文件的屬性設置。
原型:function FileGetAttr(const FileName: string): Integer;
注意:具體返回值代碼參考幫助。

下面我們來總結一下Delphi中文件操作流程。Delphi中把文件分為3種:文本文件、類型文件和無類型文件。文本文件指可以被任意文件編輯器讀取的ASCII文件。類型文件包含由程序員定義的數據類型的文件。無類型文件包含了其他所有的文件類型。

1、文本文件
Step 1 調用AssignFile()將文件變量與一個關聯起來。如:
AssignFile(MyTextFile,’TextFile.txt’);
Step 2 打開文件。有三種打開文件的方式:1.Rewrite過程創建並打開文件,對於一個已經存在的文件,此操作將使文件被覆蓋;2.使用Reset過程只讀地打開一個文件;3.使用Append過程向已經存在的文本文件追加文本。
Step 3 對文件進行操作。如Write或Read操作。
Step 4 使用CloseFile來關閉一個已經打開的文件。
下面是一個文本文件操作的示例。
例1:

復制內容到剪貼板
代碼:
procedure TForm1.Button1Click(Sender: TObject);
var
MyTextFile: TextFile; //定義變量MyTextFile為文本文件類型
begin
(*步驟1,將文件變量與外部文件聯系。相當於為外部文件找了個“替身”*)
AssignFile(MyTextFile, ‘TextFile.txt’);
(*判斷操作的文件是否存在,不存在則創建文件。*)
if FileExists(‘TextFile.txt’) then
(*步驟2,打開文件,不過在打開前,最好進行文件是否存在的判斷。*)
Append(MyTextFile)
else
Rewrite(MyTextFile);
try
(*步驟3,對文件進行操作。*)
WrtieLn(MyTextFile, ‘在文件末尾添加的文字!’);
Flush(MyTextFile); //清空緩沖區,確保字符串已經寫入文件之中。
finally
(*步驟4,關閉打開的文件,CloseFile常與try…finally搭配,用於回收資源 *)
CloseFile(MyTextFile);
end;
end;


2、類型文件
Step 1 定義數據結構
Step 2 調用AssignFile()將文件變量與一個類型文件關聯起來。
Step 3 打開類型文件。
Step 4 對類型文件進行操作。
Step 5 關閉已經打開的文件。
下面例子演示了類型文件的操作。
例2:

復制內容到剪貼板
代碼:
(*步驟1,定義數據結構。*)
type
TPerson = record
Name: string[20];
Sex: string[4]
Age: Integer;
End;

procedure TForm1.Button1Click(Sender: TObject);
var
PersonFile: file of TPerson; //聲明PersonFile變量為TPerson類型文件
Person: TPerson;
begin
(*步驟2,關聯文件。*)
AssignFile(PersonFile, ‘Person.dat’);
(*步驟3,打開文件。 *)
Reset(PersonFile);
try
While not Eof(PersonFile) do
(*步驟4,對文件進行操作。*)
begin
Read(PersonFile, Person);
Memo1.Lines.Add(Person.Name);
Memo1.Lines.Add(Person.Sex);
Memo1.Lines.Add(IntToStr(Person.Age));
end;
finally
(*步驟5,關閉文件。*)
CloseFile(PersonFile);
end;
end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM