Fortran Coder

标题: Fortran中有无办法确认一个文件是否是格式化文本文件 [打印本页]

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



作者: li913    时间: 2019-1-3 09:59
fortran 并不能查询一个文件是否Formatted或Unformatted,而只能查询一个已打开的文件的格式,这个格式是由open语句指定的,而不是文件属性。帮助文档里写着“is connected”,你可能忽略了。

QQ截图20190103095325.png (93.37 KB, 下载次数: 267)

QQ截图20190103095325.png

作者: liudy02    时间: 2019-1-3 10:23
li913 发表于 2019-1-3 09:59
fortran 并不能查询一个文件是否Formatted或Unformatted,而只能查询一个已打开的文件的格式,这个格式是由 ...

咦,那看来就不知道是查尔曼的书有问题还是我的理解有问题了
非常感谢你
作者: fcode    时间: 2019-1-3 11:22
因为文本文件,也是二进制文件。所以很难判定一个文件是文本还是二进制。
如果是你已知的文本编码(ANSI、UTF-8、Unicode等),你可以尝试去解析,出现解析不正确的时候,就认为是二进制的。有时候还需考虑 Unicode Big-Endian 的情况。甚至也可能是你不知道的编码。

作者: liudy02    时间: 2019-1-3 14:33
fcode 发表于 2019-1-3 11:22
因为文本文件,也是二进制文件。所以很难判定一个文件是文本还是二进制。
如果是你已知的文本编码(ANSI、U ...

嗯,说的很有道理啊,我对一种程序语言有这种期望是不应该的……




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2