關於 Delphi 中流的使用(2) 用 TFileStream(文件流) 讀寫


TStream 是一個抽象的基類, 不能直接生成對象. 在具體的應用中, 主要使用它的子孫類:
TFileStream: 文件流
TStringStream: 字符串流
TMemoryStream: 內存流
TResourceStream: 資源文件流

THandleStream: 是 TFileStream 的父類、TStream 的子類
TCustomMemoryStream: 是 TMemoryStream 和 TResourceStream 的父類、TStream 的子類

與流相關的常用類還有: TReader、TWriter、TCompressionStream、TDecompressionStream

來一個文件流的例子:


 

procedure TForm1.Button1Click(Sender: TObject);
var
  getStream,setStream: TFileStream; {聲明一個文件流}
  getPath,setPath: string;
begin
  getPath := 'c:\temp\get.jpg'; {需要這個文件存在}
  setPath := 'c:\temp\set.jpg'; {這個會自動建立}
  if not FileExists(getPath) then
  begin
    ShowMessage('找不到我們要測試的圖片文件: ' + getPath);
    Exit;
  end;

  getStream := TFileStream.Create(getPath, fmOpenRead or fmShareExclusive);
  setStream := TFileStream.Create(setPath, fmCreate);
  {建立文件流需要兩個參數: 參數 1 是路徑, 參數 2 是打開模式}

  getStream.Position := 0; {流指針移到開始, 復制時從這里開始}
  setStream.CopyFrom(getStream, getStream.Size); {Copy 流}
  {CopyFrom 的參數 2 是要復制的內容大小; 如果為 0 , 不管指針在什么位置都會復制所有內容}
  {CopyFrom 返回實際拷貝的字節數}

  {這時硬盤上就有 set.jpg 文件, 與 get.jpg 一么一樣}
  {其實就是復制文件, 不過這里我們是用文件流實現的}

  getStream.Free;
  setStream.Free;
end;

TFileStream 打開模式與共享模式:

分類 參數 說明



fmCreate  建立文件, 如果存在則打開它。
fmOpenRead 只讀打開
fmOpenWrite 只寫打開
fmOpenReadWrite 讀寫打開



fmShareCompat 共享模式, 兼容 Dos
fmShareExclusive  不允許別人以任何方式打開
fmShareDenyWrite  允許別人以只寫方式打開
fmShareDenyRead 允許別人以只讀方式打開
fmShareDenyNone 允許別人以任何方式打開


免責聲明!

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



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