Nic*_*cue 53 binary formatting encoding abstraction file
为什么我应该使用人类可读的文件格式而不是二进制格式?有不是这种情况的情况吗?
编辑:我在最初发布问题时确实有这个作为解释,但现在不太相关:
在回答这个问题时,我想让提问者参考一个标准的答案,解答为什么使用人类可读的文件格式是一个好主意.然后我搜索了一个,找不到一个.所以这就是问题所在
Nic*_*cue 76
正确的答案取决于它.例如,如果您正在编写音频/视频数据,如果您将其删除为人类可读的格式,则它将无法读取!word文档是一个典型的例子,人们希望它们是人类可读的,因此更加灵活,并且通过迁移到XML MS就是这样.
比二元或文本更重要的是标准或非标准.如果你使用标准格式,那么你很可能和下一个人不必编写解析器,这对每个人来说都是一个胜利.
如果你必须编写自己的格式(和解析器),那么下面是一些自以为是的原因,你可能想要选择一个而不是另一个.
在一天结束时,我认为任何一方都不能在这里获得优势.
你确定你真的想要一个文件吗?你考虑过数据库吗?:-)
积分
很多这个答案正在将其他人写的东西合并到其他答案中(你可以在那里看到).特别要感谢Jon Skeet的评论(包括在线和离线),以便提出可以改进的方法.
Jon*_*eet 26
这完全取决于具体情况.
人类可读格式的好处:
二进制格式的可能好处:
不要忘记,您始终可以实现二进制格式,但也可以生成用于转换为人类可读格式的工具.这就是Protocol Buffers框架所做的事情 - 实际上非常罕见的IME需要解析协议缓冲区的文本版本,但能够将其作为文本写出来真的很方便.
编辑:万一这最终成为一个公认的答案,你也应该牢记由starblue提出的观点:人类可读的形式是很多的版本比较好.我怀疑设计一个适合于漫射的二进制格式(以及可以生成人类可读差异的地方)是可行的,但现有diff工具的开箱即用支持对文本来说会更好.
sta*_*lue 17
使用文本格式可以更轻松地进行版本控制,因为可以轻松查看和合并更改.
特别是MS-Word在这方面让我们感到悲痛.
重要的一点是:您编写一次解析器,但多次读取输出.这种倾向有利于HRF.
一个主要原因是,如果有人需要阅读数据说,30年后,可以找出人类可读的格式.二进制要困难得多.
如果您的大型数据集本质上是二进制的(例如图像),那么它们显然不能以二进制形式存储.但即使这样,元数据也可以(而且应该!)是人类可读的.