是否有一些情况我不得不喜欢二进制文件到文本文件?我用C作为编程语言?
例如,如果我要存储一些大文本文件,最好是使用文本文件还是二进制文件?
编辑
目前的文件没有要求人类可读的要求.有些性能差异,安全性差异等等?
编辑
很抱歉省略其他要求(感谢Carey Gregory)
>要保存的记录是ascii编码
>文件必须加密(AES)
>机器可以随时关机.所以我要尽力防止错误.
>我想知道文件是否在程序之外更改,我想我将使用该文件的sha1摘要.
解决方法
作为一般规则,定义文本格式并使用它.这很多
更容易开发和调试,更容易看到是什么
如果它不起作用就会出错.
更容易开发和调试,更容易看到是什么
如果它不起作用就会出错.
如果您发现文件变得太大,或者接受了
通过电线传输的时间很长,考虑压缩它们.
压缩文本文件通常比您可以使用的文件小
二进制文件.或者考虑一种不那么冗长的文本格式;这是可能的
用于可靠地传输数据的文本表示
比XML使用的字符少得多.
最后,如果你最终不得不使用二进制文件,请尝试选择
现有格式(例如Google的协议块),或基于您的格式
现有格式的格式.请记住:
>实际上,Binary比文本更多的工作
必须写所有的<<操作符再次,包括那些
在标准库中.
>二进制文件调试起来要困难得多,因为你不能
很容易看到你实际做了什么.
关于你的上次编辑:
>加密后,结果将是二进制的.您可以使用二进制文件的表示形式(base64或其他一些),但结果不会比二进制更可读,所以这不值得打扰.如果您正在加密,在写入磁盘之前,您会自动丢失所有内容文字的优点.>关闭电源的问题意味着您无法使用直接的.您必须使用以下命令打开或创建文件完整事务完整性的必要选项(O_SYNC as在Unix下打开的标志).您必须将每条记录都写为对系统的单个写请求.>为了以防万一,有一个校验和总是一个好主意.如果你担心安全问题,SHA1是个不错的选择.但保持请记住,如果有人有权访问该文件,并且想要故意改变它,他们可以重新计算SHA1和也插入新值.