程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 2010 新增功能之: IOUtils 單元(7): TFile 結構的功能

Delphi 2010 新增功能之: IOUtils 單元(7): TFile 結構的功能

編輯:Delphi

IOUtils 單元主要就是三個結構: TDirectory、TPath、TFile, 很有用; 下面是 TFile 的功能簡介.

  TFile.Exists();

//判斷指定的文件是否存在 

  TFile.Copy();

//復制文件 
var 
 source,dest: string; 
begin 
 TFile.Copy(source, dest);    {不允許覆蓋同名的文件} 
 TFile.Copy(source, dest, True); {將覆蓋同名的文件} 
end; 

  TFile.Move();

//移動文件 
var 
 source,dest: string; 
begin 
 TFile.Move(source, dest); 
end; 

  TFile.Delete();

//刪除文件 

  TFile.Replace();

//替換文件, dest 會備份在 bak, 復制 source 的內容到 dest 後, sourece 會被刪除. 
var 
 source,dest,bak: string; 
begin 
 source := 'c:\temp\t1.txt'; 
 dest  := 'c:\temp\t2.txt'; 
 bak  := 'c:\temp\t3.txt'; 
 TFile.Replace(source, dest, bak);    {前兩個文件必須存在} 
 TFile.Replace(source, dest, bak, True); {忽略錯誤} 
end; 

  TFile.Create();

//建立文件並返回一個和文件關聯的 TFileStream, 指定文件存在則覆蓋 
var 
 buf: array[0..1023] of Char; 
 size: Integer; 
 fs: TFileStream; 
begin 
 {模擬一個緩沖區並填充} 
 size := Length(buf) * SizeOf(Char); 
 FillChar(buf, size, 65); {填充字母 A} 
 
 {使用返回的 TFileStream 寫入流} 
 fs := TFile.Create('c:\temp\test1.dat'); 
 fs.Write(buf, Length(buf) * SizeOf(Char)); 
 fs.Free; 
 
 {如果已知要寫入流的大小, 可以使用第二個參數指定, 這樣會快一點} 
 fs := TFile.Create('c:\temp\test2.dat', size); 
 fs.Write(buf, Length(buf) * SizeOf(Char)); 
 fs.Free; 
end; 


 TFile.OpenWrite();

//按只寫權限打開文件並返回一個和文件關聯的 TFileStream 
const 
 buf: array[0..2] of Char = ('A', 'B', 'C'); 
var 
 path: string; 
 fs: TFileStream; 
begin 
 path := 'c:\temp\test.dat';  {文件要存在} 
 fs := TFile.OpenWrite(path); 
 fs.Seek(0, TSeekOrigin.soEnd); {把流指針移到尾部} 
 fs.Write(buf, Length(buf)*SizeOf(Char)); 
 fs.Free; 
end; 

  TFile.OpenRead();

//按只讀權限打開文件並返回一個和文件關聯的 TFileStream 
var 
 path: string; 
 fs: TFileStream; 
begin 
 path := 'c:\temp\test.dat';  {文件要存在} 
 fs := TFile.OpenRead(path); 
 ShowMessage(IntToStr(fs.Size)); 
 fs.Free; 
end; 

  TFile.Open();

//打開文件並返回一個和文件關聯的 TFileStream 
var 
 path: string; 
 fs: TFileStream; 
begin 
 path := 'c:\temp\test.dat';    {文件要存在} 
 
 //重載一: 指定打開模式; 默認操作權限是 faReadWrite, 默認線程訪問權限是 fsNone 
 fs := TFile.Open(path, TFileMode); 
 
 //重載二: 指定打開模式、操作權限; 默認線程訪問權限是 fsNone 
 fs := TFile.Open(path, TFileMode, TFileAccess); 
 
 //重載三: 指定打開模式、操作權限和其他線程的訪問權限 
 fs := TFile.Open(path, TFileMode, TFileAccess, TFileShare); 
 
{ TFileMode 打開模式: 
 TFileMode.fmCreateNew  創建新文件, 如果文件已存在則將引發異常; 
 TFileMode.fmCreate    創建新文件, 如果文件已存在則覆蓋; 
 TFileMode.fmOpen     打開現有文件, 如果該文件不存在則將引發異常; 
 TFileMode.fmOpenOrCreate 打開文件, 如果文件不存在則建新文件; 
 TFileMode.fmTruncate   打開現有文件並清空; 
 TFileMode.fmAppend    打開現有文件並把流指針移到文件尾, 如果文件不存在創建新文件. 
} 
{ TFileMode 操作權限: 
 TFileMode.faRead   只讀; 
 TFileMode.faWrite   只寫; 
 TFileMode.faReadWrite 可讀寫. 
} 
{ TFileShare 對其他線程的訪問限制: 
 TFileMode.fsNone   禁止其他線程共享; 
 TFileMode.fsRead   允許其他線程讀; 
 TFileMode.fsWrite   允許其他線程寫; 
 TFileMode.fsReadWrite 允許其他線程讀寫. 
} 
end; 


 TFile.CreateText();

//建立文本文件, 存在則覆蓋; 會返回 TStreamWriter 
var 
 path: string; 
 sw: TStreamWriter; 
begin 
 path := 'c:\temp\test.txt'; 
 sw := TFile.CreateText(path); {使用的是 UTF8 格式} 
 sw.Write(123); 
 sw.Write('ABC'); 
 sw.Close; 
end; 

  TFile.AppendText();

//為追加而打開文本文件, 不存在則創建; 會返回 TStreamWriter 
var 
 path: string; 
 sw: TStreamWriter; 
begin 
 path := 'c:\temp\test.txt'; 
 sw := TFile.AppendText(path); {使用的是 UTF8 格式} 
 sw.Write(123); 
 sw.Write('ABC'); 
 sw.Close; 
end; 

  TFile.AppendAllText();

//打開文本文件, 追加文本後關閉; 文件不存在則創建. 
var 
 path: string; 
begin 
 path := 'c:\temp\test.txt'; 
 TFile.AppendAllText(path, 'NewString'); 
 TFile.AppendAllText(path, 'NewString', TEncoding.UTF8); {可指定編碼格式} 
end; 

  TFile.OpenText();

//打開文本文件, 返回 TStreamReader. 
var 
 path: string; 
 sr: TStreamReader; 
begin 
 path := 'c:\temp\test.txt'; 
 sr := TFile.OpenText(path); {將使用 UTF8 格式} 
 ShowMessage(sr.ReadLine); 
 sr.Close; 
end; 

  TFile.WriteAllText();

//打開文本文件, 寫入指定文本後關閉; 不管文件存在與否都將覆蓋! 
var 
 path: string; 
begin 
 path := 'c:\temp\test.txt'; 
 TFile.WriteAllText(path, '123'); 
 TFile.WriteAllText(path, '123', TEncoding.UTF8); {可指定編碼格式} 
end; 

  TFile.WriteAllLines();

//打開文本文件, 寫入指定的字符串數組後關閉; 不管文件存在與否都將覆蓋! 
var 
 path: string; 
 arr: TStringDynArray; {這定義在 Types 單元} 
begin 
 SetLength(arr, 2); 
 arr[0] := 'AAA'; 
 arr[1] := 'BBB'; 
 
 path := 'c:\temp\test.txt'; 
 TFile.WriteAllLines(path, arr); 
 TFile.WriteAllLines(path, arr, TEncoding.UTF8); {可指定編碼格式} 
end; 

  TFile.WriteAllBytes();

//打開文本文件, 寫入指定的 TBytes 數組後關閉; 不管文件存在與否都將覆蓋! 
var 
 path: string; 
 bs: TBytes; 
begin 
 SetLength(bs, 2); 
 bs[0] := 65; 
 bs[1] := 66; 
 
 path := 'c:\temp\test.txt'; 
 TFile.WriteAllBytes(path, bs); 
end; 

  TFile.ReadAllText();

//打開文本文件, 全部讀取字符串變量後關閉. 
var 
 path: string; 
 str: string; 
begin 
 path := 'c:\temp\test.txt'; 
 str := TFile.ReadAllText(path); 
 str := TFile.ReadAllText(path, TEncoding.UTF8); {可指定編碼格式} 
end; 

 TFile.ReadAllLines();

//打開文本文件, 全部讀入到字符串數組後關閉. 
var 
 path: string; 
 arr: TStringDynArray; {這定義在 Types 單元} 
begin 
 path := 'c:\temp\test.txt'; 
 arr := TFile.ReadAllLines(path); 
 arr := TFile.ReadAllLines(path, TEncoding.UTF8); {可指定編碼格式} 
 ShowMessage(arr[0]); 
end; 

  TFile.ReadAllBytes();

//打開文本文件, 全部讀入到 TBytes 數組後關閉; 
var 
 path: string; 
 bs: TBytes; 
begin 
 path := 'c:\temp\test.txt'; 
 bs := TFile.ReadAllBytes(path); 
 ShowMessage(IntToStr(Length(bs))); 
end; 

  暫時測試有問題的方法:

TFile.Encrypt(); {加密文件} 
TFile.Decrypt(); {解密文件} 

  其他方法:

{讀取和設置屬性的方法前面有過例子} 
TFile.GetAttributes(); 
TFile.SetAttributes(); 
 
{讀取和設置文件的建立時間、最後寫入時間、最後訪問時間(分別有本地和UTC兩種時間格式)} 
TFile.GetCreationTime(); 
TFile.GetCreationTimeUtc(); 
TFile.GetLastAccessTime(); 
TFile.GetLastAccessTimeUtc(); 
TFile.GetLastWriteTime(); 
TFile.GetLastWriteTimeUtc(); 
TFile.SetCreationTime(); 
TFile.SetCreationTimeUtc(); 
TFile.SetLastAccessTime(); 
TFile.SetLastAccessTimeUtc(); 
TFile.SetLastWriteTime(); 
TFile.SetLastWriteTimeUtc(); 



 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved