二进制文件

二进制文件

  • 其实所有的文件最终都是二进制的

  • 文本文件无非使用最简单的方式可以读写的文件

    • more、tail
    • cat
    • vi
  • 而二进制文件是需要专门的程序来读写的文件

  • 文本文件的输入输出是格式化,可能经过转码


文本 VS 二进制

  • Unix喜欢用文本文件来做数据存储和程序配置

    • 交互式终端的出现使得人们喜欢用文本和计算机"talk"
    • Unix的shell提供了一些读写文本的小程序
  • Windows喜欢用二进制文件

    • DOS是草根文化,并不继承和熟悉UNIX文化
    • PC刚开始的时候能力有限,DOS的能力更有限,二进制更接近底层
  • 文本的优势是方便人类读写,而且是跨平台

  • 文本的缺点是程序输入输出要经过格式化,开销大

  • 二进制的缺点是人类读写困难,而且不跨平台

    • int的大小不一致,大小端的问题...
  • 二进制的优点是程序读写快


程序为什么要文件

  • 配置

    • Unix用文件,Windows用注册表
  • 数据

    • 稍微有点量的数据都放入数据库了
  • 媒体

    • 这个只能是二进制的
  • 现实是,成勋通过第三方库来读写文件,很少读写二进制文件了


二进制读写

  • size_t fread(void * restrict ptr, size_t size, size_t nitems,FILE * restrict stream);
  • size_t fwrite(const void *restrice ptr, size_t size, size_t nitems, FILE *restrict stream);
  • 主语iFILE指针是最后一个参数
  • 返回的是成功读写的字节数

为什么nitem?

  • 因为二进制文件的读写一般都是通过对一个结构便令的操作来进行的
  • 于是nitem就是用来说明这次读写几个结构变量!

你可能感兴趣的:(二进制文件)