(Linux文件)文件编程操作

1.简述:

1.(内容很多):文件系统原理和访问机制,文件在内核中的管理机制,什么是文件信息节点innode,文件的共享,文件权限,各种用户对其权限。(不实用)(有更深入的理解或开发LINUX内核时要学,入门不用)。
2.应以应用为主,比如:(1)账单(ATM取钱后打印的,其实就是程序运行中产生的数据记录了下来,发到打印机打印,要产生这个文件)(2)游戏进度 例:贪吃蛇(3)配置文件等
3.关心如何用代码操作文件,实现文件的创建 打开 编辑等自动化执行。
4.操作系统提供了一系列的API:
如linux系统:打开open 读写write/read
光标定位lseek 关闭close

一 .文件打开及创建

1.要使用open函数要包含的3个头文件:
 #include<sys/types.h> 
#include<sys/stat.h>
#include<fcntl.h>
2.打开/创建文件的3个PI:
open函数(两个原型):
int open(const char *pathname,int flags);
//两个参数,第一个是个字符指针,指向文件的路径。第二个是个整型数,是个权限,权限的参数有哪些后面讲。
int open(const char *pathname,int flags,mode_t mode);
int creat(const char *pathname,mode_t mode);
3.文件描述符:

一个程序可能打开很多文件 file1 file2 file3 都用open来打开
当执行writ e() read()时,怎么知道该操作哪个文件时。就要用到文件的返回值(文件描述符)(起到索引的作用),open一个文件时会返回一个描述符,要write() read()时,把描述符传进来。

4.flags:
O_RDONLY 只读打开
O_WRONLY只写打开 
O_RDWR可读可 写打开。
当附带了权限后,打开的文件就只能按这种权限来操作。

以上三个常数只能指定一个,下列常数是可选择的。
O_CREAT若文件不存在则创建它,使用时需同时说明第三个参数mode,用其说明该新文件的存取许可权限。
O_EXCL若同时指定了OCREAT,而文件已存在,则出错。
O_APPEND 每次写时都加到文件的尾端。
O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0。

5.文件权限:
可读R (4)
可写W(2)
执行X (1)。
0600(6=2+4)	权限:可读可写
6.补充
  1. O_EXCL 判断一个文件是否存在:
    原理:O_EXCL:若同时指定了OCREAT,而文件已存在,则出错。
    在这里插入图片描述
    2.O_APPEND (每次写时都加到文件的尾端)
    文件file1中原本有的内容,例如12345678。编写demo时又写入了一串字符例如:999999,再编译到file1中,12345678会被覆盖。但是加入O_APPEND就可以另起一行写那串字符,不会覆盖。
    不添加,覆盖的情况(可能):999999 78
    在这里插入图片描述

3.O_TRUNC 不覆盖了,直接删掉写新的。
在这里插入图片描述
4.CREAT函数
常见创建模式:宏表示 数字
S_IRUSR: 4 可读
S_IWUSR: 2 可写
S_IXUSR: 1 可执行
S_IRWXU: 7 可读,写,执行
在这里插入图片描述
三个参数:
(1)输入pwd后,在绝对路径,会出现/home/jmh
(2)jmh:要创建的文件名(3)创建模式,可读可写可执行

文件写入操作

需要的头文件: #include<unistd.h>
write函数类型:ssize_t write(int fd, const void *buf, size_t count)

fd:文件描述符,对文件的后续操作都通过他
const void *buf:无类型的指针,缓冲区
Write函数的作用:将缓冲区(const void*buf)这个指针指向内存的位置  里的数据,写(size_t count)这么多个字节,写到刚才打开的(int fd)这个文件里来

2.strlen函数:计算字符串的长度
3.close(fd)关闭文件
4.代码实现(用到<string.h>头文件是因为strlen函数)
代码部分:
在这里插入图片描述

文件读取操作

函数原型:ssize_t read(int fd, void *buf ,size_t count)
在这里插入图片描述

文件光标移动

函数原型:off_t lseek(int fd, off_t offset,int whence);
理解:将文件读写指针相对whence移动offset个字节
第二个参数:off_t offset (偏移值)
2.第三个参数:根据需要使用
SEEK_SET指向文件的头
SEEK_END指向文件的尾
SEEK_CUR指向文件当前位置

假如一串字符占10个字节,想让光标回到头部(此时光标已经在末尾),偏移值可以写-10来让光标回到头部,负的多了不行,一点都打不出来,负的少了,读写出来的也相应的少。
该函数也可以计算文件大小

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值