1. 程式人生 > >關於 Delphi 中流的使用(2) 用 TFileStream(檔案流) 讀寫

關於 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 允許別人以任何方式開啟