Fortran Coder

查看: 9904|回复: 6
打印 上一主题 下一主题

[文件读写] Fortran文件续写

[复制链接]

3

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
15 点
跳转到指定楼层
楼主
发表于 2015-4-4 12:18:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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.
谢谢!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
608 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-4-4 12:27:15 | 只看该作者
1.先把原有的内容读出来,然后write 1,再write原有内容。
其他编辑器,比如记事本,UltraEdit 也是这样做的。

2.顺序读取,倒序使用就行了。
Do i = 1 , 9
  read( 文件号 , * ) a( 9 - i + 1 )
End Do

3

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
15 点
板凳
 楼主| 发表于 2015-4-4 12:32:04 | 只看该作者
楚香饭 发表于 2015-4-4 12:27
1.先把原有的内容读出来,然后write 1,再write原有内容。
其他编辑器,比如记事本,UltraEdit 也是这样做 ...

谢谢
对于第一个问题:为了加入很少的语句而重复写入一次,程序不够优化,是否有其他的办法呢?
我原本想加入的这几行重新写入另外一个文件,但是想着写入一个文件会好些。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
608 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

地板
发表于 2015-4-4 12:35:58 | 只看该作者
没有别的办法,所有的文本编辑器都是这样做的。

连 UltraEdit 这样的商业软件都是这样,打开一个大的文本文件,非常慢,即便你做了很小的改动,保存一下也非常慢。

如果有好的办法,UltraEdit 早就用了。这已经不是 Fortran 的问题了,除非操作系统的文件管理方式有大的突破。

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
608 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

5#
发表于 2015-4-4 12:37:32 | 只看该作者
不过你可以从你的技术实现上做出修改,

比如用二进制文件。预先在文件的前面留出足够的空白。

或者如果非要用文本文件,每一行都一样长,可以考虑用直接读取的有格式文件。

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
6#
发表于 2015-4-6 18:11:13 | 只看该作者
二进制文件操作起来会比文本文件更容易维护。所以建议楼主考虑换一种文件格式。

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

7#
发表于 2015-4-7 09:01:30 | 只看该作者
百事可乐 发表于 2015-4-6 18:11
二进制文件操作起来会比文本文件更容易维护。所以建议楼主考虑换一种文件格式。 ...

恩,建议直接上HDF格式,如果文件足够大的话
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-16 13:02

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表