我正在编写一个文件读取库,需要检查文件是否已打开,以便我可以跳过open语句并直接进行读取。
如何在fortran中实现这一目标?
答案 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