Linux文件编程API

文件编程简述:

对于文件编程我自己关心的是如何用代码操作文件,如实现文件创建,代开,编辑,关闭等自动化执行,当我们在操作系统中手动操作一个文件时,我们的操作顺序为:打开/创建文档->编辑文档->保存文档->关闭文档,那当我们想要计算机帮助我们自动化完成上面的操作时,我们可以使用操作系统提供的API去实现对文件的操作,如Linux提供的下列API:

打开/创建 open/creat
读写 read/write
光标定位 lseek
关闭 close

1、open/creat
头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

函数原型
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);
open函数中pathname表示打开/创建文件的绝对路径/相对路径,flag表示对文件的操作权限,flag的值有:O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 可读可写打开
当我们附带了权限后,打开的文件就只能按照这种权限来操作。
以上这三个常数中应当只指定一 个。下列常数是可选择的:
O_CREAT 若文件不存在则创建它。使用此选项时,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限。
O_EXCL 如果同时指定了OCREAT,而文件已经存在,则出错。
O_APPEND 每次写时都加到文件的尾端。
O_TRUNC 属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0。
mode:一定是在flags中使用了O_CREAT标志,mode记录待创建的文件的访问权限,open函数既可以打开文件,也可以创建文件。creat函数只可用于创建文件open和creat的返回值返回的是一个整形数,通常将其称之为文件描述符,作为每一个文件的唯一标识,在打开/创建文件之后所有的操作都需要这个文件标识符作为坐标去找到相应的文件进行操作,当文件打开或创建失败时,返回-1

2、read/write
头文件
#include <unistd.h>

函数原型
ssize_t read(int fd, void *buf, size_t count);

ssize_t write(int fd, const void *buf, size_t count);

read函数用来读取文件中的数据,fd即为open/caret的返回值,一个文件描述符,buf是一个用户自定义的缓冲区,用于临时存放从文件中读取出的数据,count是read函数从文件中读取的字符的个数,以字节为单位,而read函数的返回值为成功读取的字节数,若读取失败,则返回-1

write函数用来将数据写进文件,write函数与read函数类似,fd表示文件描述符,buf是一个常量池,里面存放的是我们将要写进文件的数据,count表示将要写进文件的数据个数,以字节为单位,write函数的返回值为成功写入文件的字节数,若写入失败,则返回-1

3、lseek
头文件
#include <sys/types.h>
#include <unistd.h>

函数原型
off_t lseek(int fd, off_t offset, int whence);

lseek函数的作用是移动光标,fd表示文件描述符,whence表示设置光标的位置,whence可取:
SEEK_SET :文件头
SEKK_CUR:光标当前位置
SEEK_END:文件尾

offset表示光标相对于whence的偏移量,以字节为单位进行偏移,当offset为负数时,向文件头的方向偏移,当offset为0时,不偏移,当offset为正数时,向文件尾的方向偏移,lseek函数的返回值为成功时返回光标相对于文件头的偏移量,失败时返回-1

4、close
头文件
#include <unistd.h>

函数原型
int close(int fd);

close函数用来关闭文件,fd表示文件描述符,当文件关闭成功时返回0,失败时返回-1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值