Fortran Coder

查看: 144|回复: 4

[文件读写] Fortran中有无办法确认一个文件是否是格式化文本文件

[复制链接]

86

帖子

8

主题

0

精华

专家

F 币
544 元
贡献
312 点
发表于 2019-1-2 13:17:30 | 显示全部楼层 |阅读模式
看到Chapman的书14.5节描述未格式化文件时言之凿凿地说可以用Inquire查询文件是否是格式化文件时我却疑惑了
Inquire里的输出变量应该只有Formatted,Unformatted和Encoding三个与查询文件是否格式化有关
首先Encoding只能返回"UTF-8","Undefined"或"Unknown",
"UTF-8"对应的是格式化文本文件不会错,这个"Undefined"应对应于未格式化吧,
可是如果返回的是"Unknown"的话就不知道了吧
另外我也试过用Formatted,或Unformatted去查询文件状态,发现结果纯属扯淡,没有什么参考意义……
所以我就疑惑了,真的有办法确认一个文件是否格式化么
在Linux下查看一个疑似未格化文件时,系统也只能是提醒说怀疑这文件是二进制文件
Fortran如果判断一个文件是否是格式化文件,究竟应该是用Inquire的哪个输出变量合适,又能做到什么程度呢……


回复

使用道具 举报

317

帖子

1

主题

0

精华

宗师

F 币
1725 元
贡献
1144 点
发表于 2019-1-3 09:59:42 | 显示全部楼层
fortran 并不能查询一个文件是否Formatted或Unformatted,而只能查询一个已打开的文件的格式,这个格式是由open语句指定的,而不是文件属性。帮助文档里写着“is connected”,你可能忽略了。
QQ截图20190103095325.png

86

帖子

8

主题

0

精华

专家

F 币
544 元
贡献
312 点
 楼主| 发表于 2019-1-3 10:23:11 | 显示全部楼层
li913 发表于 2019-1-3 09:59
fortran 并不能查询一个文件是否Formatted或Unformatted,而只能查询一个已打开的文件的格式,这个格式是由 ...

咦,那看来就不知道是查尔曼的书有问题还是我的理解有问题了
非常感谢你

1359

帖子

12

主题

5

精华

论坛跑堂

Fcode跑堂伙计

F 币
411 元
贡献
367 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-1-3 11:22:23 | 显示全部楼层
因为文本文件,也是二进制文件。所以很难判定一个文件是文本还是二进制。
如果是你已知的文本编码(ANSI、UTF-8、Unicode等),你可以尝试去解析,出现解析不正确的时候,就认为是二进制的。有时候还需考虑 Unicode Big-Endian 的情况。甚至也可能是你不知道的编码。

86

帖子

8

主题

0

精华

专家

F 币
544 元
贡献
312 点
 楼主| 发表于 2019-1-3 14:33:09 | 显示全部楼层
fcode 发表于 2019-1-3 11:22
因为文本文件,也是二进制文件。所以很难判定一个文件是文本还是二进制。
如果是你已知的文本编码(ANSI、U ...

嗯,说的很有道理啊,我对一种程序语言有这种期望是不应该的……
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-3-26 14:33

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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