【问题标题】:Delete data of file删除文件数据
【发布时间】:2013-10-21 15:47:05
【问题描述】:

每次执行打开操作时,我都需要打开一个我不知道它是否存在的文件。如果它存在,我想打开它并将其中的信息存储到一个数组中,进行一些计算,清理打开的文件并将新信息写入其中。如果它不存在,我想让它保持打开状态以向其写入信息。

我必须使用 fortran 77。

我的代码是:

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

我的问题涉及status = "UNKNOWN",如果文件存在,我需要清理它(删除所有数据)。怎么会这样?

谢谢

【问题讨论】:

    标签: file fortran fortran77


    【解决方案1】:

    您可以使用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)
    

    【讨论】:

    • 谢谢。我认为“状态=未知”也可以解决问题。我的问题知道如何删除文件中的所有数据以便我可以向其中写入新信息?再次感谢
    • 我认为 status='replace' 在 fortran 77 中不可用。我错了吗?谢谢
    • 还要注意,status=replace 将在open 语句执行时删除文件(内容)。
    • 啊我明白了.. 那么你应该使用'iostat=ierr'。如果文件无法打开,则ierr 将非零!
    猜你喜欢
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    相关资源
    最近更新 更多