zoukankan      html  css  js  c++  java
  • 测试 TStreamWriter、TStreamReader


    TStreamWriter 和 TStringWriter 都是继承于抽象类: TTextWriter;
    TStreamReader 和 TStringReader 都是继承于抽象类: TTextReader.

    它们的功能相似, 不过 TStreamWriter、TStreamReader 又有了 "流" 的特性, 比较适合对字符串流的读写.

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const FilePath = 'c:\temp\test.txt';
    
    //貌似是流操作, 其实写入的非字符串类型也都转换成了字符串
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Writer: TStreamWriter;
      Reader: TStreamReader;
    begin
      Writer := TStreamWriter.Create(FilePath);
      Writer.WriteLine('string');
      Writer.WriteLine(123);
      Writer.WriteLine(True);
      Writer.WriteLine(3.14);
      Writer.Close;
      Writer.Free;
    
      Reader := TStreamReader.Create(FilePath);
      ShowMessage(Reader.ReadToEnd);
      Reader.Close;
      Reader.Free;
    end;
    
    //读写时可指定字符编码
    procedure TForm1.Button2Click(Sender: TObject);
    var
      Writer: TStreamWriter;
      Reader: TStreamReader;
    begin
      {参数 2 如果是 True 将会在已有文件的后面添加; False 是新建文件}
      Writer := TStreamWriter.Create(FilePath, False, TEncoding.Unicode);
      Writer.WriteLine('万一的 Delphi 博客');
      Writer.Close;
      Writer.Free;
    
      Reader := TStreamReader.Create(FilePath, Tencoding.Unicode);
      ShowMessage(Reader.ReadToEnd);
      Reader.Close;
      Reader.Free;
    end;
    
    //不指定编码时, 默认的是 UTF8
    procedure TForm1.Button3Click(Sender: TObject);
    var
      Writer: TStreamWriter;
      Reader: TStreamReader;
    begin
      Writer := TStreamWriter.Create(FilePath);
      Writer.Write('万一的 Delphi 博客');
      Writer.Close;
      Writer.Free;
    
      Reader := TStreamReader.Create(FilePath);
      ShowMessage(Reader.CurrentEncoding.ClassName); {TUTF8Encoding}
      Reader.EndOfStream;
      Reader.Close;
      Reader.Free;
    end;
    
    //可基于另一个 TStream 创建; 从 BaseStream 上看它的确就是个流
    procedure TForm1.Button4Click(Sender: TObject);
    var
      Writer: TStreamWriter;
      Reader: TStreamReader;
    begin
      Writer := TStreamWriter.Create(TFileStream.Create(FilePath, fmCreate), TEncoding.UTF8);
      Writer.Write('万一的 Delphi 博客');
      Writer.BaseStream.Free;
      Writer.Close;
      Writer.Free;
    
      Reader := TStreamReader.Create(TFileStream.Create(FilePath, fmOpenRead), TEncoding.UTF8);
      ShowMessage(Reader.ReadLine); {万一的 Delphi 博客}
      Reader.BaseStream.Free;
      Reader.Close;
      Reader.Free;
    end;
    
    end.
    
  • 相关阅读:
    sizeof,终极无惑(上)
    send,recv,sendto,recvfrom
    【问卷调查】社团对海大学生成长的影响研究(及部分调查结果)
    Opencv cvCircle函数
    墨菲定律、二八法则、马太效应、手表定理、“不值得”定律、彼得原理、零和游戏、华盛顿合作规律、酒与污水定律、水桶定律、蘑菇管理原理、钱的问题、奥卡姆剃刀等13条是左右人生的金科玉律
    C#操作Excel文件(读取Excel,写入Excel)
    秋风秋雨愁煞人
    Java Applet读写client串口——终极篇
    数据库索引的作用和长处缺点
    EasyARM i.mx28学习笔记——开箱试用总结
  • 原文地址:https://www.cnblogs.com/del/p/1581979.html
Copyright © 2011-2022 走看看