TOC \o "1-3" \h \u 32329 一、 文件的概念及开/关 2
18141 (一) 文件I/O的介绍 (了解) 2
11785 (二) 文件描述符的含义 (了解) 2
31998 (三) 文件的打开和关闭 (熟练) 2
27943 1. 文件的打开open 2
1601 2. 文件的关闭close 3
15391 二、 文件的读/写/定位 4
7473 (一) 读取文件(熟练) 4
8037 (二) 写入文件(熟练) 4
24635 (三) 定位文件(熟练) 5
24661 (四) 思考和练习 5
3429 三、 目录 6
24204 (一) 读取目录(熟练) 6
193 1. 打开目录opendir 6
15641 2. 读取目录流内容readdir 6
13145 3. 关闭目录文件closedir 6
21035 4. 示例 7
9905 (二) 修改文件访问权限(熟练) 7
13598 (三) 获取文件属性(熟练) 7
18698 1. 获取文件属性stat/lstat/fstat 7
26142 2. 存放文件属性的结构体类型struct stat 8
266 3. 通过宏来判读文件类型st_mode 9
9146 (四) 练习-获取并显示文件属性 10
17283 四、 作业 10
文件的概念及开/关
文件I/O的介绍 (了解)
1,文件IO是由posix(可移植操作系统接口)定义的一组函数
2,不提供缓冲机制,每次读写操作都引起系统调用
3,核心概念是文件描述符(标准IO是流FILE)
4,访问各种类型文件(标准IO是访问普通文件或者终端文件)
5,linux下,标准I/O基于文件I/O实现
文件描述符的含义 (了解)
每个打开的文件都对应一个文件描述符
文件描述符是一个非负整数。linux为程序中每个打开的文件分配一个文件描述符
文件描述符从0开始分配,依次递增。(每个程序分开描述)
文件I/O操作通过文件描述符来文采
0,1,2,的含义?
0:标准输入
1:标准输出
2:标准错误
文件的打开和关闭 (熟练)
文件的打开open
open函数用来创建或打开一个文件:
成功时返回文件描述符;出错时返回EOF
打开文件时使用两个参数
创建文件时第三个参数指定新文件的访问权限
只能打开设备文件
示例1
以只写方式打开文件1.txt。如果文件不存在则创建,如果文件存在则清空:
示例2
以读写方式打开文件1.txt。如果文件不存在创建,如果文件存在则报错:
文件的关闭close
close函数用来关闭一个打开的文件:
成功时返回0;出错时返回EOF
程序结束时自动关闭所有打开的文件
文件关闭后,文件描述符不再代表文件
文件的读/写/定位
读取文件(熟练)
read函数用来从文件中读取数据
成功时返回实际读取的字节数;出错时返回EOF
读到文件末尾时返回0
fd 是open时的返回值
buf是接收数据的缓冲区,接收从文件中读取的内容。
count不应超过buf大小,字节数。一般设定为sizeof(buf)
示例
写入文件(熟练)
write函数用来想文件写入数据
成功时返回实际写入的字节数;出错时返回EOF
fd open的返回值,指定文件,是文件描述符。
buf是发送数据的缓冲区
count写入的字节数,不应超过buf大小
示例
定位文件(熟练)
lseek函数用来定位文件
成功时返回定位后最新的文件读写位置;出错时返回EOF
参数offset和参数whence同fseek完全一样
思考和练习
利用文件I/O实现文件的复制
·文件名通过命令行参数指定
·打开文件的方式?
·如何判断读到源文件的末尾?
——~/practice/level4/day3/mycp.c
目录
读取目录(熟练)
打开目录opendir
opendir函数用来打开一个目录文件:
DIR是用来描述一个打开的目录文件的结构体类型
成功时返回目录流指针;出错时返回NULL
能够获取目录下的文件名称等信息
读取目录流内容readdir
readdir函数用来读取目录流中的内容
struct dirent是用来描述目录流中一个目录项的结构体类型
包含成员char d_name[256] 参考帮助文档
成功时返回目录流dirp中下一个目录顶;
出错或到末尾时返回NULL
关闭目录文件closedir
closedir函数用来关闭一个目录文件
成功时返回0;出错时返回EOF
示例
修改文件访问权限(熟练)
chmod / fchmod函数用来修改文件的访问权限
成功时返回0;出错时返回EOF
root和文件所有者能修改文件的访问权限
chmod是通过