### 中心主题:文件I/O与目录操作
#### 一、文件I/O的概念
- 定义:文件输入输出,即程序对文件进行读写操作。
#### 二、文件描述符
- 概念:一个整数,用于标识打开的文件,内核通过它来访问文件。
- 作用域:在进程内部有效,进程间不共享。
#### 三、特殊的文件描述符
- STDIN_FILENO(0):标准输入,通常对应键盘输入。
- STDOUT_FILENO(1):标准输出,通常对应屏幕显示。
- STDERR_FILENO(2):标准错误,用于输出错误信息。
#### 四、文件I/O函数
1. `open`
- 功能:打开文件,返回文件描述符。
- 示例:
```c
int fd = open("example.txt", O_RDONLY);
```
2. `umask`
- 功能:设置或获取文件模式创建掩码,控制新建文件的权限。
- 示例:
```c
umask(022);
```
3. `close`
- 功能:关闭文件描述符。
- 示例:
```c
close(fd);
```
4. `write`
- 功能:向文件写入数据。
- 示例:
```c
char *message = "Hello, World!";
write(fd, message, strlen(message));
```
5. `read`
- 功能:从文件读取数据。
- 示例:
```c
char buffer[100];
ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
```
6. `lseek`
- 功能:移动文件指针位置。
- 示例:
```c
lseek(fd, 0, SEEK_SET); // 移动到文件开始位置
```
#### 五、获取文件信息
1. `stat`
- 功能:获取文件状态信息,如大小、权限等。
2. 获取文件所属用户ID
3. 获取文件所属组名
4. 获取文件类型和权限
- 示例:
```c
struct stat fileStat;
stat("example.txt", &fileStat);
```
#### 六、目录相关函数
1. `opendir`
- 功能:打开目录流,返回指向目录流的指针。
- 示例:
```c
DIR *dir = opendir("/path/to/directory");
```
2. `closedir`
- 功能:关闭目录流。
- 示例:
```c
closedir(dir);
```
3. `readdir`
- 功能:读取目录流中的下一个目录项。
- 示例:
```c
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s
", entry->d_name);
}
```
1.bmp文件头(bmp file header):提供文件的格式、大小等信息 (14字节)
22.位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息(50字节)