Linux文件操作详解:一切皆文件
1. Linux 下的文件类型
Linux 中常见的 7 种文件类型:
标识 | 类型 | 说明 |
---|---|---|
b | 块设备文件 | 存储类设备(硬盘等) |
c | 字符设备文件 | 输入/输出设备(鼠标、键盘、显示器等) |
d | 目录文件 | 文件夹 |
- | 普通文件 | .c 、.h 、.txt 、.jpg 、.mp4 、a.out 等 |
l | 软链接文件 | 类似快捷方式 |
s | 套接字文件 | 网络通信 |
p | 管道文件 | 进程间通信 |
ls -l
输出解析
执行:
ls -l
# 或
ll
示例:
d rwxrwxr-x 2 linux linux 4096 1月 29 2024 20240129/
字段含义:
文件类型:
d
表示目录文件权限:
r
:读权限(read)w
:写权限(write)x
:执行权限(execute)-
:无权限
链接个数
用户名(所有者)
组名(所属用户组)
文件大小(字节)
最后修改时间
文件名称
权限分三组:
第一组(rwx
):文件所有者权限
第二组(rwx
):同组用户权限
第三组(r-x
):其他用户权限
2. 文件操作思想
文件操作的一般流程:
打开文件
读写文件
关闭文件
3. 文件操作方法
标准 IO
由 C 标准库 提供,基于 文件流(FILE*) 操作常用函数:fopen
/ fclose
fgetc
/ fputc
fgets
/ fputs
fread
/ fwrite
4. 标准 IO 函数详解
4.1 fopen
—— 打开文件
FILE *fopen(const char *pathname, const char *mode);
功能:打开文件并返回文件流指针
参数:pathname
:文件路径
mode
: "r"
:只读,文件必须存在 "r+"
:读写,文件必须存在
"w"
:只写,存在则清空,不存在则创建 "w+"
:读写,存在则清空,不存在则创建
"a"
:追加写,不存在则创建 "a+"
:读写追加,不存在则创建
返回值:成功:FILE *
失败:NULL
4.2 fputc
/ fgetc
—— 单字符写入与读取
int fputc(int c, FILE *stream);
功能:向文件写入一个字符
返回值:成功返回写入字符的 ASCII 值,失败返回 EOF
int fgetc(FILE *stream);
功能:从文件读取一个字符返回值:成功:读取的字符 ASCII 值失败或文件结束:EOF
4.3 fputs
—— 写入字符串
int fputs(const char *s, FILE *stream);
功能:写入字符串(不写入 \0
结束符)
返回值:成功:非负整数 失败:EOF
4.4 fgets
—— 读取一行
char *fgets(char *s, int size, FILE *stream);
功能:从文件读取一行数据
返回值:成功:s
的首地址 失败或文件结束:NULL
5. 文件类型细分
文本文件:如 .c
、.txt
(以字符存储,便于直接查看)
二进制文件:如 .jpg
、.mp4
、a.out
(存储为二进制数据)
6. 主函数参数
int main(int argc, const char *argv[])
argc
:命令行参数个数
argv
:指针数组,每个元素指向一个参数字符串 argv[0]
:程序名 argv[1]
:第一个参数 argv[2]
:第二个参数
示例:
./a.out aaa bbb
# argc = 3
# argv[0] = "./a.out"
# argv[1] = "aaa"
# argv[2] = "bbb"
7. 总结
标准 IO:
使用 C 标准库函数
常用函数: fopen
/ fclose
fgetc
/ fputc
fgets
/ fputs