Delphi7文件操作常用函數


1. AssignFile、Erase

AssignFile

procedure AssignFile(var F; FileName: string);:給文件變量連接一個外部文件名。這里需要注意的是AssignFile不能用在已打開的文件上。

  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. var  
  3.     text : String;  
  4.     F1 : TextFile;  
  5. begin  
  6.    Try  
  7.       AssignFile(F1,Trim(Edit1.Text));  //變量與外部文件名關聯  
  8.       Append(F1);      
  9.       text := Memo1.Text;  
  10.       write(f1,text);  
  11.       CloseFile(f1);                   //終止變量與外部文件的關聯  
  12.    Except  
  13.       ShowMessage('寫入失敗');  
  14.    End;  
  15. end;  

 Erase

procedure Erase(var F);:刪除一個外部文件。

  1. AssignFile(MyFile,'d:\dd.txt');  
  2. Erase(MyFile);  //必須關閉一個文件后才可以刪除它  


 

2.ChDir

procedure ChDir(const S: string); overload;

procedure ChDir(P: PChar); overload;

將當前目錄修改為指定目錄。其中S、P表示指定修改的目錄。

 

3.CloseFile

procedure CloseFile(var F);:終止一個文件變量與一個外部磁盤文件的關聯。其中,F表示指定關閉的文件變量。

 

4. CreateDir

function CreateDir(const Dir: string): Boolean;:創建一個新的目錄。如果返回值為true,則表示目錄創建成功;否則返回失敗。

  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. begin  
  3.   if not DirectoryExists('c:\temp') then  //判斷目錄是否存在  
  4.     if not CreateDir('C:\temp') then      //判斷目錄是否可以新創建  
  5.     raise Exception.Create('Cannot create c:\temp');  
  6. end;  


5. DeleteFile、FileClose、FileCreate、FileExists、FileGetAttr、FileOpen、FileSearch

DeleteFile

function DeleteFile(const FileName: string): Boolean;:從磁盤中刪除一個指定的文件。如果返回true,則表示文件刪除成功;否則刪除失敗。

FileClose

procedure FileClose(Handle: Integer);:用來關閉一個指定的文件。

FileCreate

function FileCreate(const FileName: string): Integer; overload;

function FileCreate(const FileName: string; Rights: Integer): Integer; overload;

用於創建一個文件。其中第二個函數中的Rights用於設置文件許可,主要用於Linux系統。如果返回值為-1,則表示文件創建失敗;否則表示文件創建成功。該返回值作為FileClose的參數。

FileExists

function FileExists(const FileName: string): Boolean;:測試指定的文件是否存在。如果存在,則返回true;否則返回false。

FileGetAttr

function FileGetAttr(const FileName: string): Integer;:返回文件的屬性。如果返回值為1,則文件是只讀的(faReadOnly);如果為2,則文件是隱藏文件(faHidden);

FileOpen

function FileOpen(const FileName: string; Mode: LongWord): Integer;:用指定的訪問方式打開一個指定的文件。其中Mode為文件訪問方式(只讀(mOpenRead)、只寫(fmOpenWrite)、讀寫(fmOpenReadWrite))。如執行成功,則返回值大於等於0;否則返回值為-1。

  1. procedure OpenForShare(const FileName: String);  
  2.   
  3. var  
  4.   FileHandle : Integer;  
  5. begin  
  6.   FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);  
  7.   if FileHandle > then  
  8.     {valid file handle}  
  9.   else  
  10.     {Open error: FileHandle = negative DOS error code}  
  11. end;  

FileSearch

function FileSearch(const Name, DirList: string): string;:在指定路徑中搜索指定的文件。其中DirList用於輸入文件所在路徑,如有多個路徑,中間需要用;。如未找到文件,則返回空值;否則返回的是文件名稱。

  1. procedure TForm1.btn_SearchFileClick(Sender: TObject);  
  2. var  
  3.   FileToFind : string;  
  4. begin  
  5.   FileToFind := FileSearch(edit_FileName.Text,GetCurrentDir);  
  6.   if FileToFind = '' then  
  7.     ShowMessage('不能找到文件')  
  8.   else  
  9.     ShowMessage('找到文件:'+FileToFind);  
  10. end;   

 

6. DirectoryExists

function DirectoryExists(const Directory: string): Boolean;:判斷指定的目錄是否存在。如果目錄存在,則返回true;否則返回false。其中Directory如果是絕對路徑,則在該絕對路徑下查找,否則則在當前項目路徑下查找。

 

7.FileRead、FileSeek、FileWrite

FileRead

function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;:從指定文件(當前文件指針)中讀取相應字節的數據,同時調整文件指針位置。其中,buffer用於保存從文件中讀取的數據;count表示讀取的字節數。返回實際讀取的字節數。

FileSeek

function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64; overload;

能夠重新定位文件讀寫指針。其中Origin表示源點(0表示指針在文件的開始;1表示指針在當前文件的位置;2表示指針在文件的末尾);handle為FileOpen或FileCreate返回的值;Offset表示位移量。如果FileSeek執行成功,則返回新的文件指針;否則返回-1。

  1. procedure TForm1.btn_ReadClick(Sender: TObject);  
  2. var  
  3.   fend : integer;  
  4.   fOpen : THandle;  
  5.   buffer : PChar;  
  6.   count : integer;  
  7.   i: integer;  
  8. begin  
  9.   {文件讀取分為:1.已指定方式打開文件;2.利用fileSeek獲取字符長度;3.重新定位文件指針,使其從頭開始; 
  10.   4.為buffer分配內存空間;5.讀取文件內存,返回長度;6.關閉文件;}  
  11.   fOpen := FileOpen('F:\test.txt',fmOpenReadWrite);   //以讀寫的方式打開文件test.txt  
  12.   if fOpen<> -then  
  13.   begin  
  14.   fend := FileSeek(fOpen,0,2);   //將文件指針移動到末尾,為了方便創建數組  
  15.   FileSeek(fOpen,0,0);       //將文件指針重新指定到文件開頭,為讀寫文件作准備  
  16.   buffer := PChar(AllocMem(fend+1));     //為buffer分配內存空間  
  17.   count := FileRead(fOpen,buffer^,fend);  //讀取文件內容,返回字符數  
  18.   FileClose(fOpen);        //關閉文件  
  19.   for i:=to count-do    //遍歷內存,取出內容  
  20.   begin  
  21.     ShowMessage(buffer[i]);  
  22.   end;  
  23.   end  
  24.   else  
  25.     ShowMessage('文件不存在!');  
  26. end;  

FileWirte

function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;:將緩存區中的內容寫入到文件中。其中buffer用於寫入文件的數據;count指定寫入數據的長度。

  1. {寫入文件}  
  2. procedure TForm1.btn_WriteClick(Sender: TObject);  
  3. var  
  4.   fOpen : THandle;  
  5.   result : integer;  
  6.   buffer : PChar;  
  7. begin  
  8.   fOpen := FileOpen('F:/test.txt',fmOpenReadWrite);  
  9.   if fOpen <> -then  
  10.   begin  
  11.   FileSeek(fOpen,0,2);  
  12.   buffer := PChar(edit_FileName.Text);  //將編輯框中的內容放到buffer緩沖區中  
  13.   result := FileWrite(fOpen,buffer^,StrLen(buffer));  
  14.   if result <> -then  
  15.     ShowMessage('寫入成功!')  
  16.   else  
  17.     ShowMessage('寫入失敗');  
  18.   end  
  19.   else  
  20.     ShowMessage('未找到文件');  
  21.   FileClose(fOpen);  
  22. end;  


8.FindClose、FindFirst、FindNext

FindClose

procedure FindClose(var F: TSearchRec);:終止一個查找過程,並釋放查找文件所分配的空間。其中F為TSearchRec類型的結構,記錄文件搜索時的一些信息。而FindClose中的參數值來源於FindFirst或FindNext函數。

FindFirst

function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;:在指定目錄中搜索第一個指定屬性的文件。其中Attr(faReadOnly、faHidden、faSysFile、faVolumeID、faDirectory(23)、faArchive、faAnyFile)

FindNext

function FindNext(var F: TSearchRec): Integer;:繼續查找指定的文件。其中F為FindFirst查找文件或得到的信息。如結果返回為0,則說明函數執行成功;否則執行失敗。

  1. {查找指定目錄的文件}  
  2. procedure TForm1.btn_SearchClick(Sender: TObject);  
  3. begin  
  4.   FindFile(Trim(edit_FileName.Text));  
  5. end;  
  6.   
  7.   
  8. {自定義文件查找方法}  
  9. procedure TForm1.FindFile(filename: string);  
  10. var  
  11.   path : string;  
  12. begin  
  13.   if FindFirst(filename + '*.*',faAnyFile,search)=then  //  
  14.     begin  
  15.       if (search.Name<>'.') and (search.Name<>'..') then    //判斷路徑下是否還包含子路徑  
  16.         memo_showfile.Lines.Add(search.Name);  
  17.       while FindNext(search) = do  
  18.       begin  
  19.         path := filename + '\'+search.Name+'\';  
  20.         if(search.Name<>'.') and(search.Name<>'..') then  
  21.           memo_showfile.Lines.Add(search.Name);  
  22.         if (search.Attr = faDirectory) and (search.Name<>'.') and (search.Name<>'..') then  
  23.           FindFile(path);    //如果search.Name為目錄,則重新執行FindFile函數  
  24.       end;  
  25.       Caption := IntToStr(memo_showfile.Lines.Count);  //顯示記錄條數  
  26.     end;  
  27. end;  
  28.   
  29. {停止查找}  
  30. procedure TForm1.btn_StopSearchClick(Sender: TObject);  
  31. begin  
  32.   FindClose(search);  
  33. end;  

對於FindFirst、FindNext來說,F.Attr=32表示文件;F.Attr = 16表示目錄。

轉自:http://blog.csdn.net/kimifdw/article/details/8593043

http://www.cnblogs.com/azhqiang/p/3673589.html

 

 

1.ForceDirectories、GetCurrentDir、GetDir、SetCurrentDir

ForceDirectories

function ForceDirectories(Dir: string): Boolean;:在指定的目錄中創建一個目錄。其中參數Dir為創建目錄的全名,必須包括上級目錄。如創建成功則返回true;否則返回false。

[delphi]  view plain  copy
 
  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. var  
  3.   Dir: string;  
  4. begin  
  5.   Dir := 'C:\APPS\SALES\LOCAL';  
  6.   if ForceDirectories(Dir) then  
  7.     Label1.Caption := Dir + ' was created'  
  8. end;  

GetCurrentDir

function GetCurrentDir: string;:返回當前程序運行目錄的名稱。

GetDir

procedure GetDir(D: Byte; var S: string);:獲取當前目錄。其中,D表示指定獲取目錄的磁盤驅動器。(0表示當前磁盤;)S表示獲取的路徑的名稱字符串存放變量。

RemoveDir

function RemoveDir(const Dir: string): Boolean;:可以刪除一個現有的空目錄。

SetCurrentDir

function SetCurrentDir(const Dir: string): Boolean;:改變當前目錄。

 

2.AssignPrn

procedure AssignPrn(var F: Text);:將一個文本文件變量賦給一個打印機對象。該函數經常在打印文本時使用。

[delphi]  view plain  copy
 
  1. procedure TForm1.Button1Click(Sender: TObject);  
  2.   
  3. var  
  4.   MyFile: TextFile;  
  5. begin  
  6.   AssignPrn(MyFile);  
  7.   Rewrite(MyFile);  //在關聯打印機后,須調用ReWrite過程重新創建並打開文件  
  8.   Writeln(MyFile, 'Print this text');  
  9.   System.CloseFile(MyFile);  
  10. end;  

 

3. Flush、Read、SeekEor、write、Append、Eof、Reset、ReWrite

Flush

function Flush(var t: Text): Integer;:清空以輸出方式打開的文本緩沖區,保證所有寫入文件的字符全部寫入外部文件。如執行成功,返回0;否則返回錯誤代碼。常用語Write、WriteLn等對文本文件的寫入操作。

Read

Typed files:

procedure Read(F , V1 [, V2,...,Vn ] );

Text files:

procedure Read( [ var F: Text; ] V1 [, V2,...,Vn ] );:用於從一個文件中讀取數據。其中F是一個文件變量(如果參數F是一個有類型文件,讀取一組數據到一個變量中;如果F是一個文本文件變量,則讀取一個或多個值到一個或多個變量),V1...Vn表示存儲從文件中讀取的數據。

ReadLn

procedure ReadLn([ var F: Text; ] V1 [, V2, ...,Vn ]);:從文件中讀取一行文本。

SeekEof

function SeekEof [ (var F: Text) ]: Boolean;:確定文件末尾的狀態,忽略空白。如文件指針移動到文件的末尾,返回true;否則返回false。

SeekEofLn

function SeekEoln [ (var F: Text) ]: Boolean;:確定文件行尾的狀態,忽略空白。如當前文件指針與行尾之間有空格,返回true;否則返回False。

Write(文本文件寫入)

procedure Write( [var F: Text; ] P1 [ , P2,..., Pn] );:用於向一個文本文件寫入數據。

WriteLn

procedure WriteLn([ var F: Text; ] P1 [, P2, ...,Pn ] );:用於向文本文件中寫入數據,並添加行尾標記。

Append

procedure Append(var F: Text);:向現有文件的末尾增加記錄。其中F表示已經關聯的文件變量。

Reset

procedure Reset(var F [: File; RecSize: Word ] );:打開一個已存在的文件。

ReWrite

procedure Rewrite(var F: File [; Recsize: Word ] );:用於創建一個新文件並且打開它。

Eof

Typed or untyped files:

function Eof(var F): Boolean;

Text files:

function Eof [ (var F: Text) ]: Boolean;

檢測文件當前位置是否在文件尾。

例1:復制一個文件的內容到另一個文件。

[delphi]  view plain  copy
 
  1. var  
  2.   
  3.   F1, F2: TextFile;  
  4.   Ch: Char;  
  5. begin  
  6.   if OpenDialog1.Execute then begin  
  7.     AssignFile(F1, OpenDialog1.Filename);  //關聯文件變量和外部文件  
  8.     Reset(F1);  //打開已存在的文件  
  9.     if SaveDialog1.Execute then begin  
  10.       AssignFile(F2, SaveDialog1.Filename);  
  11.       Rewrite(F2);   //重新創建並打開文件  
  12.       while not Eof(F1) do  //檢測文件當前位置是否在文件尾  
  13.       begin  
  14.         Read(F1, Ch);  
  15.         Write(F2, Ch);  
  16.       end;  
  17.       CloseFile(F2);  
  18.     end;  
  19.     CloseFile(F1);  
  20.   end;  
  21. end;  

 

4. Seek

procedure Seek(var F; N: Longint);:移動文件當前指針到指定位置。其中F為當前已關聯的文件變量,N為偏移量。
 

5. Truncate

procedure Truncate(var F);:清除打開文件中當前指針之前的所有數據。其中F為指定處理的文件變量。

 

6. ProcessPath

procedure ProcessPath (const EditText: string; var Drive: Char; var DirPart: string; var FilePart: string);:將某文件名分解為驅動器、路徑和文件名等。其中,Drive表示驅動器,DirPart表示路徑,FilePart表示文件名。

 

7. Eof

Typed or untyped files:

function Eof(var F): Boolean;

Text files:

function Eof [ (var F: Text) ]: Boolean;

用來檢測文件當前位置是否在文件尾。其中F表示已經關聯並且打開的文件。

 

http://blog.csdn.net/kimifdw/article/details/8600992


免責聲明!

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



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