1. 程式人生 > >Delphi 之路 — 文件操作函數 (說明和使用說明)

Delphi 之路 — 文件操作函數 (說明和使用說明)

-a ... ado 文件大小 返回值 系統文件 -- 大小 可選

  Delphi 之路 — 文件操作函數 (說明和使用說明)

  • //判斷文件是否存在

      FileExists

  • //判斷文件夾是否存在

      DirectoryExists

  • //刪除文件

      DeleteFile; Windows.DeleteFile

  • //刪除文件夾

      RemoveDir; RemoveDirectory

  • //獲取當前文件夾

      GetCurrentDir

  • //設置當前文件夾

SetCurrentDir; ChDir; SetCurrentDirectory

  • //獲取指定驅動器的當前路徑名

GetDir

  • //文件改名

RenameFile

  • //建立文件夾  

      CreateDir; CreateDirectory; ForceDirectories

  • //刪除空文件夾

      RemoveDir; RemoveDirectory

  • //建立新文件

      FileCreate

  • //獲取當前文件的版本號

      GetFileVersion

  • //獲取磁盤空間 DiskSize;

      DiskFree

  • //搜索文件

      FindFirst; FindNext; FindClose

  • //讀取與設置文件屬性

      FileGetAttr; FileSetAttr

  • //獲取文件的創建時間

      FileAge

; FileDateToDateTime

--------------------------------------------------------------------------------

 1 //判斷文件是否存在 FileExists 
 2 var 
 3   f: string; 
 4 begin 
 5   f := c:"temp"test.txt; 
 6   if not FileExists(f) then 
 7   begin 
 8     //如果文件不存在 
 9   end; 
10 end;

--------------------------------------------------------------------------------

 1  1 //判斷文件夾是否存在 DirectoryExists    
 2  2 var   
 3  3   dir: string;    
 4  4 begin   
 5  5   dir := c:"temp;    
 6  6   if not DirectoryExists(dir) then   
 7  7   begin   
 8  8    //如果文件夾不存在    
 9  9   end;    
10 10 end;  

--------------------------------------------------------------------------------

1 //刪除文件 DeleteFile; Windows.DeleteFile 
2 var 
3   f: string; 
4 begin 
5   f := c:"temp"test.txt; 
6   //DeleteFile(f); //返回 Boolean 
7   //或者用系統API: 
8   Windows.DeleteFile(PChar(f)); //返回 Boolean 
9 end;

--------------------------------------------------------------------------------

1 //刪除文件夾 RemoveDir; RemoveDirectory 
2 var 
3 dir: string; 
4 begin 
5   dir := c:"temp; 
6   RemoveDir(dir); //返回 Boolean 
7   //或者用系統 API: 
8   RemoveDirectory(PChar(dir)); //返回 Boolean 
9 end;

--------------------------------------------------------------------------------

1 //獲取當前文件夾 GetCurrentDir 
2 var 
3 dir: string; 
4 begin 
5   dir := GetCurrentDir; 
6   ShowMessage(dir); //C:"Projects 
7 end;

--------------------------------------------------------------------------------

 1 //設置當前文件夾 SetCurrentDir; ChDir; SetCurrentDirectory 
 2 var 
 3 dir: string; 
 4 begin 
 5   dir := c:"temp; 
 6   if SetCurrentDir(dir) then 
 7     ShowMessage(GetCurrentDir); //c:"temp 
 8     //或者 
 9 ChDir(dir); //無返回值 
10 //也可以使用API: 
11 SetCurrentDirectory(PChar(Dir)); //返回 Boolean 
12 end;

--------------------------------------------------------------------------------

 1 //獲取指定驅動器的當前路徑名 GetDir 
 2 var 
 3 dir: string; 
 4 b: Byte; 
 5 begin 
 6   b := 0; 
 7   GetDir(b,dir); 
 8   ShowMessage(dir); // 
 9   //第一個參數: 1、2、3、4...分別對應: A、B、C、D... 
10   //0 是缺省驅動器 
11 end;

--------------------------------------------------------------------------------

 1 //文件改名 RenameFile 
 2 var 
 3 OldName,NewName: string; 
 4 begin 
 5   OldName := c:"temp"Old.txt; 
 6   NewName := c:"temp"New.txt; 
 7   if RenameFile(OldName,NewName) then 
 8     ShowMessage(改名成功!); 
 9 //也可以: 
10   SetCurrentDir(c:"temp); 
11   OldName := Old.txt; 
12   NewName := New.txt; 
13   if RenameFile(OldName,NewName) then 
14     ShowMessage(改名成功!); 
15 //也可以: 
16   SetCurrentDir(c:"temp); 
17   OldName := Old.txt; 
18   NewName := New.txt; 
19   if RenameFile(OldName,NewName) then 
20     ShowMessage(改名成功!); 
21 end;

--------------------------------------------------------------------------------

 1 //建立文件夾 CreateDir; CreateDirectory; ForceDirectories 
 2 var 
 3 dir: string; 
 4 begin 
 5   dir := c:"temp"delphi; 
 6   if not DirectoryExists(dir) then 
 7   CreateDir(dir); //返回 Boolean 
 8 //也可以直接用API: 
 9   CreateDirectory(PChar(dir),nil); //返回 Boolean 
10 //如果缺少上層目錄將自動補齊: 
11   dir := c:"temp"CodeGear"Delphi"2007"萬一; 
12   ForceDirectories(dir); //返回 Boolean 
13 end;

--------------------------------------------------------------------------------

1 //刪除空文件夾 RemoveDir; RemoveDirectory 
2 var 
3 dir: string; 
4 begin 
5   dir := c:"temp"delphi; 
6   RemoveDir(dir); //返回 Boolean 
7 //也可以直接用API: 
8   RemoveDirectory(PChar(dir)); //返回 Boolean 
9 end;

--------------------------------------------------------------------------------

 1 //建立新文件 FileCreate    
 2 var   
 3   FileName: string;    
 4   i: Integer;    
 5 begin   
 6   FileName := c:"temp"test.dat;    
 7   i := FileCreate(FileName);    
 8   if i>0 then   
 9     ShowMessage(新文件的句柄是:  + IntToStr(i))    
10   else   
11     ShowMessage(創建失敗!);    
12 end; 

--------------------------------------------------------------------------------

1 //獲取當前文件的版本號 GetFileVersion    
2 var   
3   s: string;    
4   i: Integer;    
5 begin   
6   s := C:"WINDOWS"notepad.exe;    
7   i := GetFileVersion(s); //如果沒有版本號返回 -1    
8   ShowMessage(IntToStr(i)); //327681 這是當前記事本的版本號(還應該再轉換一下)    
9 end;  

--------------------------------------------------------------------------------

 1 //獲取磁盤空間 DiskSize; DiskFree    
 2 var   
 3   r: Real;    
 4   s: string;    
 5 begin   
 6   r := DiskSize(3); //獲取C:總空間, 單位是字節    
 7   r := r/1024/1024/1024;    
 8   Str(r:0:2,s); //格式為保留兩位小數的字符串    
 9   s := C盤總空間是:  + s +  GB;    
10   ShowMessage(s); //xx.xx GB    
11   r := DiskFree(3); //獲取C:可用空間    
12   r := r/1024/1024/1024;    
13   Str(r:0:2,s);    
14   s := C盤可用空間是:  + s +  GB;    
15   ShowMessage(s); //xx.xx GB    
16 end;       

--------------------------------------------------------------------------------

 1 //查找一個文件 FileSearch    
 2 var   
 3   FileName,Dir,s: string;    
 4 begin   
 5   FileName := notepad.exe;    
 6   Dir := c:"windows;    
 7   s := FileSearch(FileName,Dir);    
 8   if s<>‘‘ then   
 9     ShowMessage(s) //c:"windows"notepad.exe    
10   else   
11     ShowMessage(沒找到);    
12 end; 

--------------------------------------------------------------------------------

 1 //搜索文件 FindFirst; FindNext; FindClose    
 2 var   
 3   sr: TSearchRec;    //定義 TSearchRec 結構變量    
 4   Attr: Integer;     //文件屬性
 5   s: string;         //要搜索的內容
 6   List: TStringList; //存放搜索結果
 7 begin   
 8   s := c:"windows"*.txt;    
 9   Attr := faAnyFile;             //文件屬性值faAnyFile表示是所有文件    
10   List := TStringList.Create;    //List建立    
11   if FindFirst(s,Attr,sr)=0 then //開始搜索,並給 sr 賦予信息, 返回0表示找到第一個    
12   begin   
13     repeat                       //如果有第一個就繼續找    
14       List.Add(sr.Name);         //用List記下結果    
15     until(FindNext(sr)<>0);      //因為sr已經有了搜索信息, FindNext只要這一個參數, 返回0表示找到    
16   end;    
17   FindClose(sr);                 //需要結束搜索, 搜索是內含句柄的    
18   ShowMessage(List.Text);        //顯示搜索結果    
19   List.Free;                     //釋放List    
20     //更多註釋:    
21     //TSearchRec 結構是內涵文件大小、名稱、屬性與時間等信息    
22     //TSearchRec 中的屬性是一個整數值, 可能的值有:    
23     //faReadOnly  1   只讀文件    
24     //faHidden    2   隱藏文件    
25     //faSysFile   4   系統文件    
26     //faVolumeID  8   卷標文件    
27     //faDirectory 16  目錄文件    
28     //faArchive   32  歸檔文件    
29     //faSymLink   64  鏈接文件    
30     //faAnyFile   63  任意文件    
31     //s 的值也可以使用?通配符,好像只支持7個?, 如果沒有條件就是*, 譬如: C:"*    
32     //實際使用中還應該在 repeat 中提些條件, 譬如判斷如果是文件夾就遞歸搜索等等    
33 end;  

--------------------------------------------------------------------------------

 1 //讀取與設置文件屬性 FileGetAttr; FileSetAttr    
 2 var   
 3   FileName: string;    
 4   Attr: Integer; //屬性值是一個整數    
 5 begin   
 6     FileName := c:"temp"Test.txt;    
 7     Attr := FileGetAttr(FileName);    
 8     ShowMessage(IntToStr(Attr)); //32, 存檔文件    
 9     //設置為隱藏和只讀文件:    
10     Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;    
11     if FileSetAttr(FileName,Attr)=0 then //返回0表示成功    
12     ShowMessage(設置成功!);    
13     //屬性可選值(有些用不著):    
14     //FILE_ATTRIBUTE_READONLY = 1; 只讀    
15     //FILE_ATTRIBUTE_HIDDEN = 2; 隱藏    
16     //FILE_ATTRIBUTE_SYSTEM = 4; 系統    
17     //FILE_ATTRIBUTE_DIRECTORY = 16 目錄  
18     //FILE_ATTRIBUTE_ARCHIVE = 32; 存檔    
19     //FILE_ATTRIBUTE_DEVICE = 64    
20     //FILE_ATTRIBUTE_NORMAL = 128; 一般    
21     //FILE_ATTRIBUTE_TEMPORARY = 256    
22     //FILE_ATTRIBUTE_SPARSE_FILE = 512    
23     //FILE_ATTRIBUTE_REPARSE_POINT = 1204    
24     //FILE_ATTRIBUTE_COMPRESSED = 2048; 壓縮    
25     //FILE_ATTRIBUTE_OFFLINE = 4096    
26     //FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引    
27     //FILE_ATTRIBUTE_ENCRYPTED = 16384    
28 end;    

--------------------------------------------------------------------------------

 1 //獲取文件的創建時間 FileAge; FileDateToDateTime    
 2 var   
 3   FileName: string;    
 4   ti: Integer;    
 5   dt: TDateTime;    
 6 begin   
 7   FileName := c:"temp"Test.txt;    
 8   ti := FileAge(FileName);    
 9   ShowMessage(IntToStr(ti)); //返回: 931951472, 需要轉換    
10   dt := FileDateToDateTime(ti); //轉換    
11   ShowMessage(DateTimeToStr(dt)); //2007-12-12 14:27:32    
12 end;

--------------------------------------------------------------------------------

Delphi 之路 — 文件操作函數 (說明和使用說明)