检查文件是否已经打开

Check whether file has been opened already

我正在写一个文件读取库,需要检查一个文件是否被打开,这样我就可以跳过open语句直接读取。

这在 Fortran 中如何实现?

您可以使用 inquire:

logical itsopen 
inquire(unit=3, opened=itsopen) 
if ( itsopen ) then
    write(*,*) 'Its open already'
else
    open(3,'myfile.txt')
end if

如果想知道与外部文件的连接,可以使用 inquire 语句。有两种形式:按文件查询;按单位查询

表示按单位查询。这测试单元 3 是否连接到 any 文件。然后可以继续使用 name=named= 说明符询问连接文件的名称。1

按文件查询允许提问:给定的文件是否连接到任何单元,如果是,连接到哪个单元?

inquire(file=filename, number=unit)

如果文件未连接则unit-1,否则unit对应文件连接的单元

或者,根据您想对 open 语句执行的操作,使用已连接的文件 open 不一定是错误的。


[1] 如果文件没有名称,name= 说明符中的变量将变为未定义。在未定义时根据所需的文件名测试此变量是不好的。 named= 说明符允许检测这种情况。