Fortran文件续写
Fortran文件读写是否有如下功能:1、对于已存在的文件a.dat,我希望打开后在文件初始加入一些内容,且保留已经存在的。
例如,a.dat已有内容为2 3 4 5(每个数字一行),现在我想在原有的基础上在第一行加入1,使数据变为1 2 3 4 5.
我使用
open(1,file=‘a.dat’,access=append)
rewind 1
write(1,*)"1"
结果前有数据还是被擦拭掉了,a.dat中只有1
2、打开文件后倒叙读取文件
例如,a.dat文件内容1 2 3 4 5 6 7 8 9,我想从最后一行读取,一次为9 8 7 6 5 4 3 2 1.
谢谢!
1.先把原有的内容读出来,然后write 1,再write原有内容。
其他编辑器,比如记事本,UltraEdit 也是这样做的。
2.顺序读取,倒序使用就行了。
Do i = 1 , 9
read( 文件号 , * ) a( 9 - i + 1 )
End Do 楚香饭 发表于 2015-4-4 12:27
1.先把原有的内容读出来,然后write 1,再write原有内容。
其他编辑器,比如记事本,UltraEdit 也是这样做 ...
谢谢
对于第一个问题:为了加入很少的语句而重复写入一次,程序不够优化,是否有其他的办法呢?
我原本想加入的这几行重新写入另外一个文件,但是想着写入一个文件会好些。 没有别的办法,所有的文本编辑器都是这样做的。
连 UltraEdit 这样的商业软件都是这样,打开一个大的文本文件,非常慢,即便你做了很小的改动,保存一下也非常慢。
如果有好的办法,UltraEdit 早就用了。这已经不是 Fortran 的问题了,除非操作系统的文件管理方式有大的突破。 不过你可以从你的技术实现上做出修改,
比如用二进制文件。预先在文件的前面留出足够的空白。
或者如果非要用文本文件,每一行都一样长,可以考虑用直接读取的有格式文件。 二进制文件操作起来会比文本文件更容易维护。所以建议楼主考虑换一种文件格式。 百事可乐 发表于 2015-4-6 18:11
二进制文件操作起来会比文本文件更容易维护。所以建议楼主考虑换一种文件格式。 ...
恩,建议直接上HDF格式,如果文件足够大的话
页:
[1]