【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类,用于将缓冲区的内容写入到流中
【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)相关推荐
- python读文本并写入另一个文本文件中怎么做_使用文本Python将文件中的文本写入另一个文件...
我正在尝试将文件中的文本放入另一个也包含文本的文件中.例: FILE 1 contains: @WORLD FILE 2 contains: HELLO:LEARNING I would like t ...
- 自学编程系列——2 文件路径与文本读写
文件路径与文本读写 2.1文件路径 2.2读写文件 2.3 shelve模块:常用 2.4 pprint模块:简单数据类型 2.5 项目实战 2.1文件路径 os模块 工作空间 不同系统不同路径格式 ...
- wxWidgets:从文件中读取文本
wxWidgets:从文件中读取文本 wxWidgets:从文件中读取文本 一个小代码片段,展示了如何从文件中读取文本 另一种方式,使用流媒体(对于更大的文件): 一个如何编写文本文件的小例子 wxW ...
- 文件搜索与文本内容查看
文件搜索与文本内容查看 查找文件:find 查看或者合并文件内容:cat 1.查看文件内容 2.合并文件内容 分屏显示: more less 管道:| 文本搜索:grep 常用的日志查看命令:tail ...
- 操作系统原理,文件系统的概念与实现,概念,需求,文件分类,逻辑结构,数据结构,文件控制块和文件目录,基本文件操作,多级目录,文件物理结构,Unix的文件多级索引结构
操作系统原理,文件系统的概念与实现,概念,需求,文件分类,逻辑结构,数据结构,文件控制块和文件目录,基本文件操作,多级目录,文件物理结构,Unix的文件多级索引结构 基本概念 一.文件概念: 1.文件 ...
- AUTOSAR从入门到精通100讲(十五)-AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解
一 TC3xx系列MCAL中TASKING Link文件解析以及代码变量定位方法 1 TASKING Link文件解析 1.1 DSRAM中的数据存放: 在AURIX™ 2G中(以TC387为例),每 ...
- Python初级学习教程—从入门开始学习(函数、组合数据类型、文件操作、异常、模块)
文章目录 入门 一.数据的相关操作 二.continue 和 break的区别(易混点) 三.函数 变量的作用域 三.函数进阶 1.函数多个返回值 2.函数参数种类 3.匿名函数 组合数据类型 一.列 ...
- vba fso读utf 文本_利用FSO对象操作文件
大家好,我们今日讲解"VBA信息获取与处理"教程中第十八个专题"FSO对象对文件及文件夹的处理"的第二节"利用FSO对象操作文件",这个专题 ...
- Python入门:操作文件
一.文件分类 文本文件:由单一特定编码组成的文件,比如utf-8 编码.GBK 编码等,.py 与 .txt 等都属于文本文件.但是文本文件本质上是以二进制形式存储的. 二进制文件:直接由 0 和 1 ...
最新文章
- Matlab相机标定并进行图像校正
- webservice 暴漏接口_webService接口是什么?
- 4道经典指针笔试题讲解 ~
- 克隆Calibrui Module
- 在Win7上安装WINDRIVER.TORNADO.V2.2.FOR.PENTIUM与运行HelloWorld
- python全栈_007_Python3格式化输出
- Altium Designer20原理图绘制
- 动态规划——最大子矩阵(hdu1081)
- iOS 关于真机和模拟器framework合并
- Asp.Net中global.asax文件的描述
- 计算机的病毒防治教案,小学信息技术《防治计算机病毒-计算机病毒》教案
- Linux 内核md5sum使用,linux命令详解:md5sum命令(示例代码)
- 在新旧交替的过程中,我们成长着—导师制,舞台和挑战
- 在桌面计算机找不到驱动,电脑杀毒后桌面不见了的原因是什么_怎么解决 - 驱动管家...
- mysql报错(Not unique table/alias)
- 【华为诺亚方舟实验室】2021届毕业生招聘
- 郑州计算机网络安全协会,过滤王文档教材网吧使用手册(网吧)-郑州市计算机网络安全协会.doc...
- Debian11安装帆软Finereport11服务器保姆版
- 济南大学计算机专业就业前景好,计算机进入“十大热门专业”,未来缺口大,这3所大学值得报考...
- 服务器无线网卡无法启动不了怎么办,wifi共享精灵启动不了怎么办