文件分类

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

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

  1. 传统的Pascal文件
    在Delphi中支持Pascal所使用的文件变量格式如F:TEXT或F:FILE。这种文件有带类型文件,文本件和无类型文件三种类型,但在DELPHI6中,有些Pascal中常用的文件操作如Assignprn和Writeln可能会与WINDOWS句柄文件不兼容
  2. 带句柄的文件
    使用句柄指明文件,当创建或打开文件时可获得其句柄,通过句柄操作文件内容。Pascal文件句柄被封装在Windows文件句柄中,由于DELPHI使用PASCAL语法,有时还提供默认参数值,通过这些参数可以方便的调用API函数,并进行文件的I/O操作。
  3. 文件流
    文件流是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);

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

注意:

  1. 三种方式,如果指定的文件已经打开,将首先关闭该文件,然后再创建 / 打开它,当前文件指针置于空文件开头
  2. 当使用 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类中常用的方法

  1. Create方法
    声明:
constructor Create(const filename:string;mode:word);overload;

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

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

共享模式和其含义

Fmsharecompat    与FCBs的打开模式相兼容
fmShareExclusive    独占方式打开(别的程序不能访问)
fmShareDenyWrite    只读方式打开(别的程序不能写)
fmShareDenyRead 只写方式打开(别的程序不能读)
fmShareDenyNone 没有限制,别的程序可以使用任何方式打开文件
  1. 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   指针指向资源的结束位置
  1. 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入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)相关推荐

  1. python读文本并写入另一个文本文件中怎么做_使用文本Python将文件中的文本写入另一个文件...

    我正在尝试将文件中的文本放入另一个也包含文本的文件中.例: FILE 1 contains: @WORLD FILE 2 contains: HELLO:LEARNING I would like t ...

  2. 自学编程系列——2 文件路径与文本读写

    文件路径与文本读写 2.1文件路径 2.2读写文件 2.3 shelve模块:常用 2.4 pprint模块:简单数据类型 2.5 项目实战 2.1文件路径 os模块 工作空间 不同系统不同路径格式 ...

  3. wxWidgets:从文件中读取文本

    wxWidgets:从文件中读取文本 wxWidgets:从文件中读取文本 一个小代码片段,展示了如何从文件中读取文本 另一种方式,使用流媒体(对于更大的文件): 一个如何编写文本文件的小例子 wxW ...

  4. 文件搜索与文本内容查看

    文件搜索与文本内容查看 查找文件:find 查看或者合并文件内容:cat 1.查看文件内容 2.合并文件内容 分屏显示: more less 管道:| 文本搜索:grep 常用的日志查看命令:tail ...

  5. 操作系统原理,文件系统的概念与实现,概念,需求,文件分类,逻辑结构,数据结构,文件控制块和文件目录,基本文件操作,多级目录,文件物理结构,Unix的文件多级索引结构

    操作系统原理,文件系统的概念与实现,概念,需求,文件分类,逻辑结构,数据结构,文件控制块和文件目录,基本文件操作,多级目录,文件物理结构,Unix的文件多级索引结构 基本概念 一.文件概念: 1.文件 ...

  6. AUTOSAR从入门到精通100讲(十五)-AURIX TC3xx MCAL中Link文件解析以及代码变量定位方法详解

    一 TC3xx系列MCAL中TASKING Link文件解析以及代码变量定位方法 1 TASKING Link文件解析 1.1 DSRAM中的数据存放: 在AURIX™ 2G中(以TC387为例),每 ...

  7. Python初级学习教程—从入门开始学习(函数、组合数据类型、文件操作、异常、模块)

    文章目录 入门 一.数据的相关操作 二.continue 和 break的区别(易混点) 三.函数 变量的作用域 三.函数进阶 1.函数多个返回值 2.函数参数种类 3.匿名函数 组合数据类型 一.列 ...

  8. vba fso读utf 文本_利用FSO对象操作文件

    大家好,我们今日讲解"VBA信息获取与处理"教程中第十八个专题"FSO对象对文件及文件夹的处理"的第二节"利用FSO对象操作文件",这个专题 ...

  9. Python入门:操作文件

    一.文件分类 文本文件:由单一特定编码组成的文件,比如utf-8 编码.GBK 编码等,.py 与 .txt 等都属于文本文件.但是文本文件本质上是以二进制形式存储的. 二进制文件:直接由 0 和 1 ...

最新文章

  1. Matlab相机标定并进行图像校正
  2. webservice 暴漏接口_webService接口是什么?
  3. 4道经典指针笔试题讲解 ~
  4. 克隆Calibrui Module
  5. 在Win7上安装WINDRIVER.TORNADO.V2.2.FOR.PENTIUM与运行HelloWorld
  6. python全栈_007_Python3格式化输出
  7. Altium Designer20原理图绘制
  8. 动态规划——最大子矩阵(hdu1081)
  9. iOS 关于真机和模拟器framework合并
  10. Asp.Net中global.asax文件的描述
  11. 计算机的病毒防治教案,小学信息技术《防治计算机病毒-计算机病毒》教案
  12. Linux 内核md5sum使用,linux命令详解:md5sum命令(示例代码)
  13. 在新旧交替的过程中,我们成长着—导师制,舞台和挑战
  14. 在桌面计算机找不到驱动,电脑杀毒后桌面不见了的原因是什么_怎么解决 - 驱动管家...
  15. mysql报错(Not unique table/alias)
  16. 【华为诺亚方舟实验室】2021届毕业生招聘
  17. 郑州计算机网络安全协会,过滤王文档教材网吧使用手册(网吧)-郑州市计算机网络安全协会.doc...
  18. Debian11安装帆软Finereport11服务器保姆版
  19. 济南大学计算机专业就业前景好,计算机进入“十大热门专业”,未来缺口大,这3所大学值得报考...
  20. 服务器无线网卡无法启动不了怎么办,wifi共享精灵启动不了怎么办

热门文章

  1. 红黑树的原理以及实现
  2. 人民币大涨出国游省钱 携程外币兑换成交量增长30%
  3. Python(八)类与对象
  4. Linux环境进程间通信系列(五):共享内存
  5. 一个很重要但很多人不理解的技术,P2P丨网络穿透与NAT原理分析
  6. linux下进程间管道通信,Linux下进程间通信方式-管道
  7. demonstration记忆_托福阅读素材:婴幼儿期记忆缺失(社会科学篇)
  8. 智慧消防解决方案(高层建筑、城中村、单位)
  9. LeetCode1609. 奇偶树
  10. bboss安全认证过滤器认证后重定向到请求页面功能介绍