100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)

【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)

时间:2019-07-15 23:55:21

相关推荐

【Delphi入门】文件系统(文件分类  文件文本变量  文件操作  文件流操作)

文件分类

文本文件(TextFile) & 二进制文件(Flie)

二进制形式存放数据占有存储空间较少,但不直观;文本文件与之相反

文件是由相同类型的数据元素组成的序列。在DELPHI中对文件操作提供强大的支持,常用的文件类型有三种:传统的Pascal文件,带句柄的文件和文件流

传统的Pascal文件

在Delphi中支持Pascal所使用的文件变量格式如F:TEXT或F:FILE。这种文件有带类型文件,文本件和无类型文件三种类型,但在DELPHI6中,有些Pascal中常用的文件操作如Assignprn和Writeln可能会与WINDOWS句柄文件不兼容带句柄的文件

使用句柄指明文件,当创建或打开文件时可获得其句柄,通过句柄操作文件内容。Pascal文件句柄被封装在Windows文件句柄中,由于DELPHI使用PASCAL语法,有时还提供默认参数值,通过这些参数可以方便的调用API函数,并进行文件的I/O操作。文件流

文件流是TfileStream类的实例,经常用于访问磁盘文件,通过文件流可以便捷地对文件I/O操作

文本文件变量

定义:

Var文本文件变量名:TextFile;VarMyFile: TextFile;//该变量可以与一个文本文件相联系

文本文件变量

定义:

Var文本文件变量名:TextFile;VarMyFile: TextFile;//该变量可以与一个文本文件相联系

文本文件变量

定义:

Var文本文件变量名:TextFile;VarMyFile: TextFile;//该变量可以与一个文本文件相联系

文件操作

将变量与磁盘中文件关联

在此步骤中需要用到 Assignfile 方法,其声明格式为:

Procedure assignfile(var F;filename:string);其中 F 为声明的文件类型变量,Filename为磁盘中带路径的文件名。例如:将文件变量A与文件IIS.LOG关联:Assignfile(a,’c:\iis.log’);

打开(新建)文件

打开文件的方式有Reset、Rewrite、Append三种

Reset:声明格式为

Procedure reset(var a[:file;Recsize:word]);

以读的方式打开一个存在的文件

Rewrite方式:声明格式为

procedure rewrite(var a:file;recsize:word]);//word是一个可选参数,当文件是一个无类型的文件时,该参数用来定义无类型文件的尺寸大小

在磁盘上创建一个新文件,如有同名文件,将删除并创建新的空文件

Append方式:声明格式为

procedure append(var a:Textfile);

以写(追加)的方式打开一个存在的文件,并且将指针置于文件末尾

注意:

三种方式,如果指定的文件已经打开,将首先关闭该文件,然后再创建 / 打开它,当前文件指针置于空文件开头当使用 Append 和 Reset 的时候,如果打开的文件不存在,将会出现一个错误

文本文件的读写

用于从文本文件中读数据的过程为READ和READLN

声明格式为

procedure ReadLn([var F:Text]V1[,V2,...,Vn]);//从文件型变量 F 关联的文件中读取数据,赋值给 P1,P2...等变量

用于向文本文件中写数据的过程为write和writeln,输出数据类型可以是:Char、Byte、ShortInt、Word、LongInt、Cardinal、Single、Real、Double、Extended、Currency、PChar、AnsiString、ShortString、String、Boolean、Bool

声明格式为:

procedure write([var F:Text]P1[,p2,...,Pn]);//向文件型变量 F 关联的文件中写入 P1,P2...等表达式的值//另外,在相应的数据后增加一个“:”和一个表示域的宽度的数字可以指定域宽和小数位,小数位的指定方法是在域宽数字后加“:”再加上表示小数点位数的整数

其中ReadLN 和 WriteLN会将数据连同回车符一起读出或写入

READ 和 WRITE在读写数据时不带有回车符

例如:

从文件中读一个字符到字符变量CH中:Read(f,ch);

关闭文件

关闭文件的声明

Procedure CloseFile(var F);

文件使用完毕之后要关闭,以释放其所占用的内存资源,关闭文件的过程为:CloseFile(文本文件变量名);

行尾与文件尾的判断

判断当前文件指针是否处于行尾和文件尾

Function Eoln[(var F: Text)]:Boolean;//处于行尾返回 True,否则返回 False

Function Eof[(var F: Text)]:Boolean;//处于文件尾返回 True,否则返回 False//如果文件为空,Eof 函数返回值也是 True

文件流操作

利用文件流可以直接对磁盘上的文件进行操作,它可以一次性将大量的数据读出或写入磁盘,从而提高操作效率,在DELPHI中定义了TfileStream(文件流)类,用于操作文件流,它是Tstream(流的基类)的子类,继承了Tstream类的一般方法和属性,Tfilestream类与TStream类的关系如下所表示:

Tstream --》Thandlestream --》 Tfilestream

TfileStream类中常用的属性:

声明:

Property Handle:INTEGER;

作用:指明文件流所操作的资源句柄,为只读属性,可以通过读取此句柄获得API函数的句柄或调用文件管理函数

Position属性

声明:

Property position:int64;

作用:来源于Tstream类,通过此属性,可得到指针在流中的位置。

Size属性

声明:

Property size:int64;

作用:来源于Tstream类,用于表明流的大小。

在Tfilestream类中常用的方法

Create方法

声明:

constructor Create(const filename:string;mode:word);overload;

作用:用于创建文件流的实例,其中参数FILENAME用于指定创建的文件名,参数MODE用于指定被创建文件的打开方式,包括打开模式和共享模式两部分,其取值见下表:

打开模式

fmCreate用给定的文件名创建文件,如此文件已经存在,则以写的模式打开此文件fmOpenRead以只读方式打开指定文件fmopenWrite以只写的方式打开指定文件,原内容将被完全覆盖掉。fmOpenReadWrite以修改方式打开指定文件

共享模式和其含义

Fmsharecompat与FCBs的打开模式相兼容fmShareExclusive独占方式打开(别的程序不能访问)fmShareDenyWrite只读方式打开(别的程序不能写)fmShareDenyRead只写方式打开(别的程序不能读)fmShareDenyNone没有限制,别的程序可以使用任何方式打开文件

Destroy方法

声明:

Destructor Destroy;override;

作用:用于撤消文件流实例;

3. Read方法

声明:

function read(var buffer;count:longint):longint;override;

作用:来源于ThandleStream类,用于从流中读数据

4. write方法

声明:

function write(const buffer;count:longint):longint;override;

作用:来源于Thandlestream类,用于向流中写数据。

5. seek方法

声明:

function seek(offset:longint;origin:word):longint;overload;virtual;

作用:来源于Thandlestream类,用于定位流中的指针,其中参数Origin取值及含义,如下表所表示

Sofrombeginning指针指向资源的开始位置sofromCurrent指针指向资源的当前位置soFromEnd指针指向资源的结束位置

CopyFrom方法

声明:

Function Copyfrom(Source:Tstream;count:int64):int64;

作用:来源于Tstream类,用于从指定的流中复制内容到其他流,当参数count>0时,从source的当前位置复制count个字节,当Conunt=0的时候,复制Source的所有数据。

7. ReadBuffer方法

声明:

Procedure readbuffer(var buffer;count:longint);

作用:来源于Tstream类,用于将流中的内容读到缓冲区。

8. WriteBuffer方法

声明:

Procedure WriteBuffer(const Buffer;Count:Longint);

作用:来源于Tstream类,用于将缓冲区的内容写入到流中

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。