前言:
此时兄弟们对“java读写文本文件的基本步骤有哪些内容和方法”都比较关心,姐妹们都想要分析一些“java读写文本文件的基本步骤有哪些内容和方法”的相关资讯。那么小编同时在网上汇集了一些关于“java读写文本文件的基本步骤有哪些内容和方法””的相关知识,希望兄弟们能喜欢,兄弟们快快来了解一下吧!4.文本文件读写编程
文本文件以行为单位进行读写操作,只能顺序读写,读写不能同时进行。
4.1.以追加方式打开文本文件
通过调用 Append 过程可以打开一个已经存在的文本文件并可在文件末尾添加文本。格式:
procedure Append(var F: TextFile);
其中:F 为文本文件变量,且必须使用 AssignFile 与文件建立关联。
如果文件不存在则产生错误;如果文件已经打开则先关闭然后再打开。
打开文件后,当前文件的位置在文件的末尾。如果 F 为空,则与标准输出文件建立关联。
4.2文本文件的读取
当文本文件通过 Reset 过程打开以读方式打开后,就可以读取文件内容。读取文本文件可以使用 Read 、Readln 过程来完成。
1.Read
格式:
procedure Read([var F: TextFile;] v1 [, v2, v3, ..., vn]);
该过程可以从文本文件中读取字符串、字符、数值等。其中:
F - 文件文件变量;v1,v2,... - 用于存储读取的数据,这些变量必须为相同的数据类型,数据类型可以为字符串类型、字符型、整型或实型等。
当数据类型为字符串或字符型时,Read 过程按照定义的长度读取字符。
当数据类型为整型或实型时,Read 过程以空格为分隔符,如果数值中出现逗号、分号或其他字符时产生异常。
2.Readln
格式:
procedure Readln([var F: TextFile;] v1 [, v2, v3, ..., vn]);
该过程可以从文本文件中读取字符串、字符、数值等,直到一行结束。
4.3文本文件的写入
当使用 Rewrite 或 Append 过程打开一个文本文件后,就可以使用 Write 或 Writeln 进行数据写入。
1.Write
格式:
procedure Write([var F: TextFile;] p1 [, p2, p3, ..., pn])
该过程向文件中写入数据。
其中:
F - 文本文件变量;
p1,p2,... - 存放写入的数据,可以是字符串型、字符型、整型或实型。
2.Writeln
格式:
procedure Writeln([var F: TextFile;] p1 [, p2, p3, ..., pn])
该过程向文件中写入一行数据,并在末尾处自动输入回车换行符。
4.4文本文件的基本操作与打印机建立关联
procedure AssignPrn(var F: TextFile);检查文件是否在行尾
function Eoln(var F: TextFile): Boolean;确保文件写入
procedure Flush(var F: TextFile);
对于以输入(Rewrite 或 Append)方式打开的文件缓冲区,以确保所有写入文件的内容都被写入到外部文件。
返回文件尾部的状态
function SeekEof(var F: TextFile): Boolean;返回文件行尾状态
function SeekEoln(var F: TextFile): Boolean;设置文件缓冲区
procedure SetTextBuf(var F: TextFile, var Buf; Size: Integer);4.5文本文件编程示例
示例:编写一个简单的文件编辑器,界面如下图:
代码如下:
unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ExtDlgs;type TForm1 = class(TForm) Panel1: TPanel; Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; SaveTextFileDialog1: TSaveTextFileDialog; OpenTextFileDialog1: TOpenTextFileDialog; procedure Memo1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } procedure CheckSaveFile; procedure SaveFileWithDialog; procedure SaveFile; public { Public declarations } end;var Form1: TForm1; F: TextFile; FileName: String; SaveState: Boolean;implementation{$R *.dfm}procedure TForm1.CheckSaveFile;var ret: Word;begin if (not SaveState) and (Length(Memo1.Text) > 0) then begin if FileName <> '' then SaveFile else begin ret := MessageDlg('保存文件吗?', mtConfirmation, [mbOk, mbCancel], 0); if ret = mrOk then begin if FileName = '' then begin SaveFileWithDialog; end; end; end; end;end;procedure TForm1.SaveFileWithDialog;begin if SaveTextFileDialog1.Execute then begin FileName := SaveTextFileDialog1.FileName; SaveFile; SaveState := true; end;end;procedure TForm1.SaveFile;var i: Integer;begin AssignFile(F, FileName); Rewrite(F); for i := 0 to Memo1.Lines.Count do Writeln(F, Utf8encode(Memo1.Lines.Strings[i])); CloseFile(F);end;procedure TForm1.Memo1Change(Sender: TObject);begin // Memo 内容发生变化时,将文件的保存状态设置为 fasle SaveState := false;end;procedure TForm1.Button1Click(Sender: TObject);var ret: Word;begin // 新建按钮 CheckSaveFile; FileName := ''; SaveState := false; Memo1.Text := '';end;procedure TForm1.Button2Click(Sender: TObject);var line: String;begin // 打开按钮 CheckSaveFile; if OpenTextFileDialog1.Execute then begin FileName := OpenTextFileDialog1.FileName; AssignFile(F, FileName); Reset(F); Memo1.Text := ''; while not Eof(F) do begin Readln(F, line); Memo1.Lines.Add(line); end; CloseFile(F); SaveState := true; end;end;procedure TForm1.Button3Click(Sender: TObject);begin // 保存按钮 if FileName = '' then SaveFileWithDialog else SaveFile;end;procedure TForm1.Button4Click(Sender: TObject);begin // 另存为按钮 SaveFileWithDialog;end;procedure TForm1.Button5Click(Sender: TObject);begin // 退出按钮 CheckSaveFile; Close;end;end.