我讨厌这样做,但我觉得如果我希望在这篇文章中找到答案,前进的道路就不会那么清晰。这就是前进的方向。
简短版本
在 Fortran 77/90 中,要打开标准 Fortran 二进制文件,您可以编写:
OPEN (5, FILE="myFile.txt")
但要打开一个平面的、非 Fortran 二进制文件,您必须编写如下所示的内容:
OPEN(5, file="myFile.txt", form='unformatted', access='direct', recl=1)
这种差异是因为 Fortran 风格的二进制文件在文件中的每个“记录”周围都有 4 字节的页眉和页脚。这些页眉/页脚描述记录中包含的数据的大小。 (在最常见的情况下,您遇到的每个二进制文件只有一条记录。)
长版
Fortran 假设了很多默认值open
论据。事实上,我们原来的示例可以用以下详细形式编写,以显示所有假定的默认值。
OPEN (5, FILE="myFile.txt")
OPEN (5, FILE="myFile.txt", FORM="FORMATTED",
+ ACCESS="SEQUENTIAL", STATUS="UNKNOWN")
让我们看看每个论点:
FORM定义文件是否包含文本 (form='formatted'
)或二进制数据(form='unformatted'
).
ACCESS定义是否按顺序从文件中读取数据(access='sequential'
)或按照您想要的任何顺序(access='direct'
).
RECL定义进入每个记录的字节数。例如,recl=1
只是说每个记录长度为 1 个字节;也许它们是 1 字节整数。
STATUS定义文件是否已存在。这STATUS="UNKNOWN"
参数意味着该文件可能尚不存在,但如果不存在,则会创建该文件。如果您想防止覆盖旧文件的可能性,请使用:STATUS="OLD"
。同样,如果您知道该文件尚不存在,您将需要使用:STATUS="NEW"
.
了解更多信息:
这些打开语句也会对随后的读/写/关闭语句产生影响。在我原来的帖子中,我需要知道,如果打开直接访问文件,则必须写入直接访问文件。 (也就是说,您的二进制文件中不会包含 Fortran 页眉/页脚。)但是,Fortran 的默认功能是创建包含 Fortran 页眉和页脚的顺序访问文件。
欲了解更多信息open
Fortran 77/90 中的语句,网上有一个很好的资源:
一个不错的页面作者:主教大学的林金森(非常感谢)。
官方文档稍微多一点由 IBM 为其编译器提供。