Linux系统编程---文件...续

8.查文件是否存在:

int open(const char *pathname,int flags,mode_t mode);

pathname :要打开的文件名(含路径,缺省为当前路径)
Flags:
O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR可读打开
当我们附带了权限之后,打开文件就只能按照这种权限来操作。
以上这三个常数中应当只指定一个,下列常数是可选择的。
O_CREAT 若文件不存在则创建它,使用此选项时,需要同时说明第三个参数mode 用其说明该新文件的存取许可权限。
O_EXCL 如果同时指定了OCREAT 而文件已经存在,则打开文件失败(返回值为-1)。
Mode: 一定是在flags中使用了O_CREAT标志,mode记录创建的文件的访问权限。在这里插入图片描述
如果返回值为-1则文件存在,打开文件会失败。

9. O_APPEND 每次写时都加到文件的尾端:
在这里插入图片描述
这样每次写入内容都会另起一行写入,如果没有O_APPEDN 则写入内容会覆盖原本有的部分内容。

10. O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或者只写成功打开,则将其长度截短为0;

在这里插入图片描述这样写入内容会直接覆盖掉本身有的内容。

11. 文件描述符:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0是标准输入,1是标准输出。写入10个字节到readBuf中,然后输出readBuf中10个字节。

12. 动态文件和静态文件:
文件存放在磁盘中,在磁盘中的文件时静态文件。
动态文件是 --open静态文件之后,会在Linux内核产生一个结构体来记录这个文件。
结构体
{
fd;
信息节点;
Buf;(存放内容)
}
为啥要用动态文件是因为块设备不灵活。

13.文件操作实现CP指令:
拷贝文件:
cp 原文件 目标文件
1.参数:
2.思路:

1.打开文件 src.c (原文件)
2.读取内容到buf
3.打开/创建des.c(目标文件)
4.将buf的内容写入到des.c 中
5.close (关闭两个文件)

首先我们的main函数其实是有参数的。
在这里插入图片描述
在这里插入图片描述

我们实现对文件实现cp可以以下这样。以下是思路
在这里插入图片描述

14.修改文件里面的数据:
思路:
1.打开文件
2.找到要修改关键词的位置
3.光标往后挪到要修改的位置(也可以直接找到修改的位置)
4.修改

比如我的文件里面有
AA=20;
BB=5;
CC=8;
DD=51;

我想修改BB的内容 让BB=8。
1.打开文件
2.找到BB=
3.让光标(指针)再往后移动到=后面。
4.修改数据。
4.1(让光标回到文件头)
5.写进文件
6.关闭文件

原文件的内容:
在这里插入图片描述

修改内容代码:
在这里插入图片描述
在这里插入图片描述
编译过程:
在这里插入图片描述最终文件内容:
在这里插入图片描述
这样就完成了。

15.对文件写入一个整数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在ASCII码中 整数65 是一个字符A。

16.对文件写入一个结构体:
其实跟写入整数一样的,只是定义个结构体。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
17.写入结构体数组:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述其实跟结构体 整数差不多的,但是注意 结构体数组访问的方式是 data1[0].c
而不是data1.c[0];

猜你喜欢

转载自blog.csdn.net/weixin_47457689/article/details/107505493