返回介绍

7.2.2 外部文件分类

发布于 2025-03-08 16:28:38 字数 1798 浏览 0 评论 0 收藏 0

Fortran 支持两种文件的访问方式(顺序访问和直接访问) 和三种文件的结构(有格式、无格式、二进制)。顺序访问或直接访问可以用于这三种结构的文件进行的每一种。因此,共有 6 种文件类型。

a) 格式化文件

在格式化文件中,记录数据内容的记录是以 ASCII 字符的方式存在的,每一条记录是以 ASCII 码中的回车符 CR(0D) 加换行符 LF(0A) 来结束的,可以用文本编辑软件打开格式文件并直接看懂其内容。即存放在文件中的数字就是平时所看到的数字字符,字符串也就是平时所看到的字符串。而若用文本编辑软件打开无格式文件或二进制文件,看到的则是一些十六进制的字符。因此如果要使文件中的内容可以被人直接看懂,应用格式文件。

OPEN 语句默认的打开文件是格式文件,也可以使用 FORM=‘FORMATTED’设置项的 OPEN 语句以明确文件是格式化的。

b) 无格式文件

无格式文件由一系列物理块组成的记录组成,所存储的记录序列的存放方式与其在内存中的存放非常相似,所以在输入输出时几乎不需作转化。由于去掉了格式控制,与有格式文件相比,在使用数据信息时所做的处理更简洁更迅速;同样也是这个原因使得无格式文件中即使存放着数字,也不能用文本编辑软件打开并看到它们。

使用无格式文件之前,应该先打开或建立一个无格式文件。通过带有 FORM=‘UNFORMATTED’设置项的 OPEN 语句来打开或建立一个文件,或者用省略 FORM 选项的 OPEN 语句来打开或建立一个无格式直接访问文件。

c) 二进制文件

二进制文件是处理最快、最简洁的一种文件,也是最紧凑的存储格式,适合于大批量数据的存储。在程序中可以用带有 FORM=’BINARY’选项的 OPEN 语句来打开或建立二进制文件。

d) 顺序访问文件

存放在顺序文件中的数据必须一个记录接一个记录地按顺序被访问。也就是说,程序中要读写第 N 条记录时,必须至少已对前面的 N-1 记录进行过读操作。在输入输出操作中,有些方法只有在顺序访问的文件中才可能实现,包括低级的输入输出操作、直接列表和名称列表输入输出操作。内部文件也必须使用顺序文件。键盘、显示器和打印机等顺序访问的外部设备必须连接成顺序文件。OPEN 语句默认的打开文件是顺序文件,也可以使用 ACCESS=‘SEQUENTIAL’设置项的 OPEN 语句以明确文件是顺序文件。

当对顺序文件进行输出时,在 OPEN 语句之后总是把 WRITE 语句输出的记录作为文件的开头,当前的 WRITE 语句所输出的记录总作为文件的最后一条记录。如果所写的顺序文件是一个已经存在的文件,则文件原来的内容将全部丢失。对一个顺序文件在读操作后立即进行写操作,则当前写的这个记录就成了文件的最后一个记录,在写操作后立即进行读操作,则必然遇到文件结束记录。如对同一个文件写操作后要进行读操作时,必须使用能够对文件的指针进行重定位的语句重新设置文件的指针。

e) 直接访问文件

存放在直接访问文件中的记录可以以任意顺序进行读写操作。文件中的记录从 1 开始连续编号,记录的长度是通过 OPEN 语句中的 RECL 选项来描述的。直接文件中的记录是通过指定要访问的记录号来实现的。因此,如果想要实现数据的随机访问可以使用直接访问文件。直接文件应用的一个最常见的实例就是数据库。在程序中可以用带有 ACCESS=’DIRECT’设置项的 OPEN 语句来打开或建立直接文件。

直接文件中的每个记录的长度必须相等。如果实际输出的记录长度不等,则应取输出的所有记录中最大的长度作为每个记录的长度。如果使用一个老文件,在 OPEN 语句中说明的记录的长度必须与实际的记录长度一致。特别要注意尾随的空格符,它占一个字节。回车换行符不计入记录长度。用直接方式建立的文件可以使用顺序方式打开进行读操作。用顺序方式建立的文件,只要记录长度相等,也可以用直接方式打开进行读操作。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文