文本文件的读写

前言:
Delphi 支持三种文件类型: 文本文件、记录文件、无类型文件。
文本文件是以行为单位进行读、写的。由于每一行的长度不一定相同,不能计算出给定行在文件中的确切位置,因而只能顺序地读写。
文本文件只能单独为读或写而打开,在一个打开的文本文件上同时进行读、写操作是不允许的。
文本文件的打开需要两个步骤:1.文件变量与文件名关联;2.初始化读写。
1.文件变量与文件名关联:
AssignFile(VarTxt, FileName);
FileName 如果省略路径将默认当前目录。
2.初始化读写有三种方式:
(1) Reset: 只读打开, 指针移到文件头;
(2) Rewrite: 创建新文件并打开, 只写;
(3) Append: 从尾部追加, 指针当然在文件尾。
文件不存在时使用 Reset 或 Append 会引发一个I/O异常。
最后用 CloseFile 关闭文件。
为保持兼容,Delphi 也允许用户用 Assign 建立关联, 用 Close 关闭文件。


图例:

temp


unit uForm_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    btn_Write: TButton;
    edt_Write: TEdit;
    btn_Read: TButton;
    btn_Exit: TButton;
    mmo_ReadAll: TMemo;
    Label1: TLabel;
    edt_File: TEdit;
    btn_Open: TButton;
    OpenDialog1: TOpenDialog;
    Label2: TLabel;
    Label3: TLabel;
    edt_Read: TEdit;
    Label4: TLabel;
    edt_Append: TEdit;
    btn_Append: TButton;
    Label5: TLabel;
    procedure btn_OpenClick(Sender: TObject);
    procedure btn_ExitClick(Sender: TObject);
    procedure btn_WriteClick(Sender: TObject);
    procedure btn_ReadClick(Sender: TObject);
    procedure btn_AppendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
  F:Text;   //TextFile和Text是一样的
  FileName: string;

procedure TForm1.btn_AppendClick(Sender: TObject);
begin
  if not FileExists(FileName) then    //判断文件是否存在
    MessageBox(handle, '文件不存在,请重新选择!', '错误', MB_OK+MB_ICONERROR)
  else
    begin
      AssignFile(F, FileName);        //文件变量与文件名关联
      Append(F);                      //文件尾部追加,指针移到文件尾
      Writeln(F, edt_Append.Text);    //将文本框的内容添加到文本末尾
      CloseFile(F);                   //关闭文件
      mmo_ReadAll.Lines.LoadFromFile(FileName);   //将文件的内容全部读取到Memo里
    end;
end;

procedure TForm1.btn_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.btn_OpenClick(Sender: TObject);
begin
  OpenDialog1.Execute;  //打开一个文本文件
  edt_File.Text:= OpenDialog1.FileName;   //文本框记录文本文件的详细地址
  FileName:= edt_File.Text;
  mmo_ReadAll.Lines.LoadFromFile(FileName);   //载入文本中的内容到Memo中
end;

procedure TForm1.btn_ReadClick(Sender: TObject);
var
  s:string;
begin
  if not FileExists(FileName) then
    MessageBox(handle, '文件不存在,请重新选择!', '错误', MB_OK+MB_ICONERROR)
  else
    begin
      AssignFile(F, FileName);
      Reset(F);   //以只读的方式按行顺序读取
      Readln(F, s);   //这里只读取了一行,需要读取多行可以在CloseFile前追加
      edt_Read.Text:= s;
      CloseFile(F);
      mmo_ReadAll.Lines.LoadFromFile(FileName);
    end;
end;

procedure TForm1.btn_WriteClick(Sender: TObject);
begin
  if not FileExists(FileName) then
    MessageBox(handle, '文件不存在,请重新选择!', '错误', MB_OK+MB_ICONERROR)
  else
    begin
      AssignFile(F, FileName);
      ReWrite(F);   //会覆盖已存在的文件
      Writeln(F, edt_Write.Text);   //这里只写入了一行,需要读取多行可以在CloseFile前追加
      CloseFile(F);
      mmo_ReadAll.Lines.LoadFromFile(FileName);
    end;
end;

end.

转载于:https://www.cnblogs.com/hblikun/articles/2180837.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值