• 文件是什么?文件是数据(字节)流的抽象-为什么C++中会把文件操作抽象为fstream?


    这不过是返祖罢了。正确的问题是为什么会把数据流抽象成文件。

    设备-字节流-文件。

    一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列)。

    文件抽象为数据流一定程度上是 Unix 造成的。

    传统上,计算机上用于 IO 的设备大致可以分成两大类,块(block)设备和流(stream)设备。前者可以抽象成一组数据块,读写必须数据块为单位,但一般可以指定任意一个数据块读写,典型的例子比如磁盘,以扇区为单位进行读写。后者可以抽象成一个数据流,你可以一个字节一个字节的读写,但写出去的数据就是写出去了,没法再改,典型的例子比如串口,发出去一个字节那就是发出去了。

    然后呢,Unix 有个概念上很好、实践中时不常要坑爹的设计,“一切 IO 皆文件”(Everything is a file)。换句话说,一个“文件”背后可能是个块设备,也可能是个流设备 …… 显然,块设备模拟流设备很容易,反之则几乎不可能,所以深受 Unix 影响的 C/C++ 在操作文件的 api 上都倾向于数据流模型 —— 这不单是 C++ 的 iostream,仔细感受下 C 的 fscanf / fprintf / fputs ……

    至于其他的数据交互模型,思路打开一点就会发现到处都是啊!这里只举一个例子:一个程序怎么读写数据库里的数据呢?



    作者:谢之易
    链接:https://www.zhihu.com/question/24734041/answer/28796441
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    输入框组
    下拉菜单
    地毯文(立足根本的基础细节篇)
    按钮组 button group
    offices web apps server2013 部署
    appium学习
    python练习
    Jmeter分布式测试
    centos安装远程桌面
    进程与线程
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10222076.html
Copyright © 2020-2023  润新知