检查文件是否已经打开

时间:2015-08-11 12:23:29

标签: file fortran

我正在编写一个文件读取库,需要检查文件是否已打开,以便我可以跳过open语句并直接进行读取。

如何在fortran中实现这一目标?

2 个答案:

答案 0 :(得分:7)

当想知道与外部文件的连接时,有inquire语句。这有两种形式:按文件查询;单位询问。

tom's answer显示单位查询。这将测试单元3是否连接到任何文件。然后,可以继续使用name=named=说明符来询问连接文件的名称。 1

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

inquire(file=filename, number=unit)

如果文件未连接,则unit将为-1,否则unit将对应于连接到该文件的单元。

或者,根据您对open语句的处理方式,open对已经连接的文件不一定是错误的。

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

答案 1 :(得分:3)

您可以使用inquire

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