首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 文件操作三大類型詳解:舊 Pascal、Windows 句柄、文件流

     編輯:Delphi

三種文件操作體系的特點、適用場景與代碼示例

Delphi 提供三層文件操作抽象:傳統 Pascal 文件變量、Windows API 文件句柄、VCL 文件流類,層級越高封裝越完善但靈活度遞減。

一、傳統 Pascal 文件類型

  • 類型:TextFile、File of Record、無類型 File
  • 函數:AssignFile、Reset/Rewrite、Read/Write/Readln/Writeln、CloseFile
  • 特點:語法簡單,自動處理緩衝,與 Windows 句柄不兼容
var F: TextFile; S: string;
begin
  if OpenDialog1.Execute then begin
    AssignFile(F, OpenDialog1.FileName);
    Reset(F); Readln(F, S); Edit1.Text := S; CloseFile(F);
  end;
end;

二、Windows 文件句柄

  • 類型:THandle (即 Integer)
  • API:CreateFile、ReadFile/WriteFile、CloseHandle、GetOverlappedResult
  • 特點:底層控制,支援同步/異步(Overlapped I/O)、文件鎖、稀疏文件等高級特性

同步讀偽碼:

bResult = ReadFile(hFile, @inBuffer, nBytesToRead, @nBytesRead, nil);
if (bResult and nBytesRead = 0) then {EOF} ...

異步讀偽碼:需初始化 OVERLAPPED 結構,調用 ReadFile 返回 ERROR_IO_PENDING 後繼續做其他事,稍後 GetOverlappedResult 取結果。

三、文件流

  • 類型:TFileStream (繼承 TStream)
  • 特點:面向對象,繼承流通用方法(Read/Write/Seek/Position/Size),易與 TMemoryStream、TBlobStream 等互操作,內部封裝 Handle 屬性可訪問底層句柄
var FS: TFileStream; MS: TMemoryStream;
begin
  FS := TFileStream.Create('data.bin', fmCreate);
  MS := TMemoryStream.Create;
  try
    MS.LoadFromFile('source.dat');
    FS.CopyFrom(MS, 0);  {內存流直接寫入文件流}
  finally
    MS.Free; FS.Free;
  end;
end;

選擇建議

場景推薦類型
簡單文本/記錄讀寫Pascal 文件變量
需異步 I/O、文件鎖、大文件隨機訪問Windows 句柄
流式處理、與其他流互操作、對象化設計TFileStream
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved