在Fortran中写入现有文件而不覆盖

max*_*haz 8 fortran overwrite

我有一个由Fortran程序(格式化)编写的现有文件,我想在文件的开头添加几行.这样做的目的是在不复制原始文件的情况下这样做.

我可以在文件的末尾添加一行:

open(21,file=myfile.dat,status='old',action='write',
        form='formatted',position="append")
write(21,*) "a new line"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

open(21,file=myfile.dat,status='old',action='write',
        form='formatted',position="rewind")
write(21,*) "a new line"
Run Code Online (Sandbox Code Playgroud)

它会覆盖整个文件.

这可能是不可能的.至少,我很高兴得到确认这实际上是不可能的.

Vla*_*r F 4

是的,这是不可能的。position=您只需设置书写位置即可。通常,您只需通过写入顺序文件来删除当前记录之后的所有内容。您可以在直接访问文件的开头调整记录,但不仅仅是在开头添加某些内容。您必须先复印一份。