1、文件的概念
- 文件的狭义定义:
指普通的文本文件,或二进制文件。包括日常所见的源代码、word文档、压缩包、图片、视频文件等等。
- 文件的广义定义:
除了狭义上的文件外,几乎所有可操作的设备或接口都可视为文件。包括键盘、鼠标、硬盘、串口、触摸屏、显示器等,也包括网络通讯端口、进程间通讯管道等抽象概念。
2、Linux中文件分为7种:
1.普通文件:存在于外部存储器中,用于存储普通数据。
2.目录文件:用于存放目录项,是文件系统管理的重要文件类型。
3.管道文件:一种用于进程间通信的特殊文件,也称为命名管道FIFO。
4.套接字文件:一种用于网络间通信的特殊文件。
5.链接文件:用于间接访问另外一个目标文件,相当于Windows快捷方式。
6.字符设备文件:字符设备在应用层的访问接口。
7.块设备文件:块设备在应用层的访问接口。
-rw-r--r-- 1 gec gec 345 Sep 12:38 a.zip //- -(regular)普通文件
drwxr-xr-x 2 gec gec 1024 Sep 12:38 dir/ //- d(directory)目录文件
prw-r--r-- 1 gec gec 0 Sep 12:38 pipe //p(pipe)管道文件(命名管道)
srw-r--r-- 1 gec gec 0 Sep 12:38 socket //-s(socket)套接字文件(Unix域/本地域套接字)
lrw-r--r-- 1 gec gec 4 Sep 12:38 link -> a.zip //- l(link)链接文件(软链接)
crw-r--r-- 1 gec gec 1, 3 Sep 12:38 character //- c(character)字符设备文件
brw-r--r-- 1 gec gec 5, 1 Sep 12:38 block //- b(block)块设备文件
3、系统io与标准io
对文件的操作,基本上就是输入输出,因此也一般称为IO接口。在操作系统的层面上,这一组专门针对文件的IO接口就被称为系统IO;在标准库的层面上,这一组专门针对文件的IO接口就被称为标准IO。
API:应用程序编程接口(网络链接)
linux的open,read/wite,close等
系统io与标准io的区别:
- 系统io:
- 由操作系统直接提供的函数接口,特点是简洁,功能单一;
- 没有提供缓冲区,因此对海量数据的操作效率较低;
- 套接字Socket、设备文件的访问只能使用系统IO;
- 标准io:
- 由标准C库提供的函数接口,特点是功能丰富;
- 有提供缓冲区,因此对海量数据的操作效率高;
- 编程开发中尽量选择标准IO,但许多场合只能用系统IO;