Fortran Coder

查看: 5740|回复: 7
打印 上一主题 下一主题

[文件读写] 二进制文件读取

[复制链接]

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
跳转到指定楼层
楼主
发表于 2021-11-17 10:35:46 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
大家好,我正在写一个读取二进制文件的程序(也十分感谢论坛对二进制文件的科普文章),在读取过程中,对文件某一段试了两种方法进行读取,发现方法A可行,而方法B运行报错。想请教一下各位大佬问题出在哪。

方法A:
[Fortran] 纯文本查看 复制代码
do j=1, n
    irec=irec+1
    read(13, rec=irec) array(j)     
enddo


方法B:
[Fortran] 纯文本查看 复制代码
read(13) ( array(j), j=1, n )


13 是文件的unit,方法B运行报的错是: forrtl: severe (259): sequential-access I/O to unit open for direct access, unit 13, file D:......
在文件的开头,是这样打开的文件: open( 13, file='...', access='Direct', form='Unformatted', recl=1 )

或者,对于这样的二进制文件读取,有更快的方式吗?
感谢讨论与指正!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

35

帖子

11

主题

0

精华

熟手

F 币
241 元
贡献
140 点
沙发
 楼主| 发表于 2021-11-18 18:15:09 | 显示全部楼层
fcode 发表于 2021-11-17 21:49
http://binary.w.fcode.cn/
此处了解 Fortran 经典的二进制文件读写方法。

感谢感谢,就是看的第一个链接的文章才写出程序的。刚看了第二个链接想请教一下您,用‘流文件’的方式读取文件在速度上,(比如,同样将文件中的一段读入到一个数组),是否比‘直接读取‘的方式要快呢?我看描述里有“它并不把二进制文件视为一个一个的“记录”,而是视为一个整体”。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-6-18 06:07

Powered by Tencent X3.4

© 2013-2024 Tencent

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