2013-10-21 47 views
2

我需要打开一个文件,我不知道每次执行打开操作时它是否存在。如果存在,我想打开它并将其中的信息存储到数组中,执行一些计算,清理打开的文件并将新的信息写入它。如果它不存在,我想打开它来写信息。删除文件的数据

我必须用FORTRAN 77

我的代码是:

OPEN(7, FILE = "C:/Abaqus_JOBS/mELF.txt", 
1 action = "READ", status = "UNKNOWN") 

我的问题是关于status = "UNKNOWN",如果该文件存在,我需要清理(删除所有数据)。如何做到这一点?

感谢

回答

3

您可以用inquire语句做到这一点:

logical :: file_exists 
! ... 

inquire(file='filename.txt',exist=file_exists) 
if (file_exists) then 
    ! Do stuff 
else 
    ! Do other stuff 
endif 

或者,因为你会无论如何擦拭文件,只需用status='replace' ;-) 'unknown'之间的差异打开'replace'是,那'replace'会创建一个新文件,如果不存在的话。

对于FORTRAN 77,status='replace'不存在。然后,open声明可能会显示为:

open(1234, file='filename.txt', status='unknown', iostat=ierr) 
if (ierr .eq. 0) then 
c file opened successfully, delete 
    close(1234, status='delete') 
endif 

c Open a new file 
open(1234, file='filename.txt', status='new', iostat=ierr) 
+0

谢谢。我认为“状态=未知”也可以做到这一点。我的quetsion知道如何删除文件中的所有数据,以便我可以写入新的信息?再次感谢 – jpcgandre

+1

'status ='replace''应该可以做到! –

+0

我不认为'status ='replace''在fortran 77中可用。我错了吗?谢谢 – jpcgandre