我对 fortran 的 open 命令有疑问。
OPEN (UNIT = , FILE=file-name, ACCESS=access, FORM=form, RECL=recl)`
Access = sequential, direct
FORM=formatted, unformatted
Run Code Online (Sandbox Code Playgroud)
reclis 是文件的记录长度(以字节为单位)
我尝试搜索很多,但无法理解顺序或直接访问、格式化或未格式化文件、文件记录长度的含义。有人可以解释一下这些术语的含义吗?
文件访问指定文件打开后如何写入(或读取)。使用一种访问模式打开,但与另一种访问模式一致的读/写通常会导致运行时错误。
顺序访问自然意味着顺序读取和写入。顺序写入意味着输出按照程序生成它的顺序放置在输出文件中,因此,如果 X 在 Y 之前输出,则文件将在 Y 之前包含 X(更靠近文件开头)。顺序读取意味着该读取是从文件的开头到结尾进行的。追加访问是一种特殊形式的顺序访问,它从文件末尾开始(因此写操作会添加到文件末尾)。
直接访问意味着可以按任何顺序访问文件的内容。这也称为随机访问。本质上,当执行输入或输出时,程序必须指定文件中要发生操作的位置。
Fortran 中的直接访问文件中的位置是用“记录”来指定的,这些记录都具有完全相同的长度(由RECL=打开文件时的子句指定)。因此,如果一个文件包含 20 条记录并且记录长度等于 30,则程序可以从该文件访问的数据总大小为 600 字节,并且每次读取或写入操作将访问包含 30 字节的记录。
未格式化的文件基本上意味着文件的内容作为流读取和写入。未格式化的顺序访问文件相当于 C 等语言中从头到尾读取的二进制文件。未格式化的直接访问文件也是二进制的,但操作可以按任何顺序访问该文件(在程序的控制下)。
格式化文件本质上意味着所有的读写都必须涉及格式规范。还有一些特殊处理,例如在写入时,在每个写入语句末尾写入文件的换行符。
纯文本文件通常作为顺序访问格式文件打开。每个 Fortran 读或写操作都作用于一个新行(因此两个写语句将在文件中生成两行,并且需要两个相应的读语句将它们读回)。
可以有格式化的直接访问文件。这基本上意味着读取和写入语句必须指定读取/写入记录的格式,但可以按任何顺序访问记录。记录的结尾通常用换行符标记。