文件系统01 – 零基础入门学习Delphi34

2014-06-08 21:10
策略和技术

文件系统01

让编程改变世界

Change the world by program

Delphi7的文件系统

通常所说的文件是指存放在磁盘上的一组数据的集合,也称为磁盘文件。

文件的分类:按文件中的数据格式分,文件可分成“文本文件” 和“二进制文件”。

[文本文件]

存放的是与数据对应的字符的ASCII码,一个字符占一个字节。

如有实数-1234.567,要存放在文本文件中,将以字符’-’、’1′、’2′、’3′、’4′、’.’、’5′、’6′、’7′的形式存放,占9个字节。

[二进制文件]

数据都是以二进制形式存放的,数据在文件中存放的格式和它在内存中的格式是一样的。

如 -1234.567 可看成是一个Real型数据,在内存中占4个字节。

可见,二进制形式存放数据占有存储空间较少,但不直观。文本文件占用的存储空间较多,比较直观。

使用磁盘文件的步骤

[常识补丁]

磁盘文件是存放在磁盘上的,而运行的程序只能处理在内存中的数据,不能直接处理磁盘等外存储器上的数据。(小鱼画图时间)

因此只有把磁盘文件中的数据读到内存中,才能在程序中使用。

同样,程序中产生或修改的都是内存中的数据,必须把这些数据写到相应的文件中去,才能使数据保存下来。

可见,磁盘文件在使用之前必须“打开”,在使用完毕后应要“关闭”。

[常见的实现方式]

创建文件

读取文件

向一个文件的末尾添加数据

读文件中某一位置的数据(随机读)

修改文件中某一位置的数据(随机写)

文件指针

问题:如何在一个文件中间部分写入数据?

磁盘文件打开后,将会产生一个指针,它指向下一次要读写的数据位置,该指针称为文件指针。

文件指针具有自动移动的功能,文件刚打开时,文件指针指向磁盘文件中的第1个数据,当读取了这个数据后,文件指针自动指向下一个数据。

当把数据写入某个文件时,文件指针总是自动指向下一次要写入数据的位置。

Delphi 7中的文件类型及文件类型变量的定义

在Delphi 7中,经常使用的文件有两类:TextFile(文本文件)和 File(二进制文件)

TextFile 文件中包含着我们能读懂的文本。

File 存放形式是二进制,一般用来存放记录类型的数据(称记录型文件)。

文本文件变量的定义

使用文件前需要定义一个文件型的变量,文本文件型变量的定义格式与功能如下:

[定义一个文本文件变量]

Var

    文本文件变量名: TextFile;

如:

var

    FishcFile:TextFile;

该语句定义了一个TextFile 类型的文本文件变量,变量名为FishcFile。

该变量可以与一个文本文件相联系,文本文件中可以用来存放字符。

文本文件的使用

再次强调一下:文本文件在使用之前必须要打开(加载到内存),对打开的文件可以进行读写操作,读写过后要关闭。

文本文件的打开

打开文本文件可分成两个步骤:

一是把文件变量与实际的文本文件关联起来;

二是打开相应的文本文件。

关联文本文件变量与文本文件

可通过AssignFile过程来关联文件变量与实际的磁盘文件,该过程的格式与功能如下:

procedure AssignFile(var F; FileName: string);

如:

AssignFile(FishcFile, ‘Fishc.txt’);

[说明]

关联了文件类型变量与磁盘文件过后,下面对磁盘文件的操作就可以通过文件型变量来进行了,程序中就不需要再与具体的磁盘文件打交道。

打开文本文件

把磁盘文件与文件型变量关联在一起后,就可以打开文件,打开文件可使用Reset、Rewrite 或Append过程中的一个来进行。

[Reset] 以”只读”方式打开

procedure Reset(var F [: File; RecSize: Word ] );

看上去很复杂?

没事,其实我们只需要这么调用即可:Rewrite(FishcFile);

[Rewrite] 以”只写”方式创建与打开

procedure Rewrite(var F: File [; Recsize: Word ] );

注意:如果磁盘上有一个同名的文件,该文件将被删除并创建一个新的空文件。当前文件指针将置于空文件的开头。

[Append] 以”添加”方式打开

procedure Append(var F: Text);

注意:使用这种方式打开文件后,文件指针位于文件的结尾。

Pay attention

参数Word是一个可选参数,当文件是一个无类型的文件时,该参数用来定义无类型文件的尺寸大小。

三种方式,如果指定的文件已经打开,将首先关闭该文件,然后再创建/打开它,当前文件指针将置于空文件的开头。

当使用 Append 和 Reset 的时候,如果打开的文件不存在,将会出现一个错误。

文本文件的关闭

关闭文件使用CloseFile过程:

procedure CloseFile(var F);

注意:使用CloseFile 过程关闭文件时,对文件的更新将实际写到磁盘文件中去,并断开文件型变量 F 与实际的磁盘文件之间的联系。

[成对出现]

AssignFile(FishcFile, ‘Fishc.txt’);

…… ……

CloseFile(FishcFile);

文本文件的写操作

[写操作]

可以使用Write 和Writeln 过程向文本文件中写入数据。

Write 只是把指定数据写到文本文件中去,Writeln 不仅把数据写到文本文件中去,而且还要在写入的数据后加上换行符。

用这两个过程输出的数据可以是以下类型:Char、Byte、Shortint、Word、Longint、Cardinal、Single、Real、Double、Extended、Currency、PChar、AnsiString、ShortString、string、Boolean、Bool。

Write过程的格式和功能如下:

procedure Write( [var F: Text; ] P1 [ , P2,..., Pn] );

功能:向文件型变量F关联的文件中写入P1,P2,…,Pn 等表达式的值。

另外,在相应的数据后增加一个“:”和一个表示域的宽度的数字可以指定域宽和小数位。

尝试一下:Example(课件及源代码下载)

小数位的指定方法是在域宽数字后加“:”再加上表示小数点位数的整数。

尝试一下:Example2(课件及源代码下载)

视频下载
技术, IT技术, Delphi, 视频教程

点击切换 到互动模式(当前为阅读模式)