文件IO和标准IO区别
标准IO | 文件IO |
---|---|
标准库 | 系统调用 |
带缓冲的IO | 不带缓冲(内核缓冲) |
通过流操作文件 | 通过文件描述符操作文件 |
高级IO | 低级IO |
标准IO
1. linux文件类型(7种)
bcd-lsp 块设备、字符设备、目录、普通、链接、套接字、管道
2. 缓冲区
文件流指针 FILE*
无缓冲
stderr行缓冲
- stdin/stdout
- 缓冲大小为1024byte
- 刷新条件:
- 遇到’\n’
- 溢出时
全缓冲
- 缓冲大小为4Kb
- 刷新条件:
- 关闭时(fclose)
- 溢出时
- fflush
3. 流
1. 开关
- fopen
- r/r+/rb+/rt+
- w/w+/wb+/wt+
- a/a+/ab+/at+
- fclose
模式 | 作用 |
---|---|
r | 只读,文件必须存在,流在文件开头 |
w | 只写,文件不存在创建,流在文件开头 |
a | 只写,文件不存在创建,流在文件末尾 |
+ | 读写 |
b | 二进制文件 |
t | 文本文件 |
2. 读写
- 按字符操作 fgetc/fputc
- 按行操作 fgets/fputs
- 按块操作 fread/fwrite
- 格式化输入输出
- printf/fprintf/sprintf
- scanf/fscanf/sscanf
3. 刷新
- fflush
4. 移动流指针
- fseek
- ftell
- rewind
5. 判断是否到文件末尾
- feof
- 检查流,如果到达文件末尾返回非零值
文件IO
1.文件描述符
- 最小的未用非负整数,其实是一个索引/一个下标
- 0 1 2 对应标准IO的 stdin stdout stderr
2.开关
- open
- umask 文件权限掩码
- 使用时:mode &~ umask
- umask 文件权限掩码
- close
- 不可多次关闭同一个文件描述符
宏 | 功能 |
---|---|
O_RDONLY | 只读模式 |
O_WRONLY | 只写模式 |
O_RDWR | 读写模式 |
O_CREAT | 创建文件 |
O_EXCL | 报错 |
O_TRUNC | 文件若是O_RDWR O_WRONLY 将被截断长度为0 |
3.读写
- read
- write
4.指针偏移
- sleek
文件和目录
- 文件
- stat
- fstat
- lstat
- 目录
- opendir
- readdir
- chdir