关闭多个文件

时间:2013-10-21 17:52:31

标签: file fortran

我需要关闭并删除几个文件,一旦它们打开,内容存储在一些变量中。为避免重复语法,我可以使用:

        OPEN(UNIT = 27, FILE = "C:/Abaqus_JOBS/w.txt", status = "UNKNOWN")
  C
        READ(UNIT,END=1000) w
   1000 CLOSE (UNIT, status='delete') ,

所以我只需要指定CLOSE (UNIT, status='delete')一次?

由于

2 个答案:

答案 0 :(得分:2)

我个人不会使用end语句,而是调用一个关闭正确文件的子例程:

subroutine del_file(uFile, stat)
  implicit none
  integer uFile, stat 

c If the unit is not open, stat will be non-zero
  close(unit=uFile, status='delete', iostat=stat)
end subroutine

你读的陈述就是:

read(unit=curUnit, iostat=stat) w
if ( stat .ne. 0 ) call del_file(curUnit, stat)

你仍然需要一些逻辑,不要从关闭文件中读取。我建议使用一个数组来保存与输入文件对应的所有单位。

答案 1 :(得分:1)

你可以,但是你会在1000 CLOSE...之间做任何事情,然后重新调用它。也就是说,

       READ(UNIT=27, END=1000)
1000   CLOSE(STATUS='delete')
       ... computations ...
       READ(UNIT=28, END=1000)

会让你重新做... computations ...,这可能是你不想想要的。可能更容易明确地编写CLOSE命令,或者正如亚历山大在评论中所说,编写一个关闭文件的函数,给定特定的文件ID,并删除它:

FUNCTION FileClose(lun) RESULT(ierr)
   INTEGER :: lun, ierr
   CLOSE(lun, STATUS='delete', IOSTAT=ierr)
END FUNCTION