文件IO

相关概念

  1. 文件IO遵循POSIX(可移植操作系统接口),无缓冲区。优势在于可以访问各种类型的文件,并使用文件描述符表示一个打开的文件。

文件描述符

  1. 每打开一个文件都有一个对应的文件描述符
  2. 文件描述符从0开始分配,依次递增
  3. 文件的IO则通过文件描述符完成

文件IO相关操作

文件的打开

#include <unistd.h>
int open(const char *path,int flags,mode_t mode);
// path 文件名(包括路径)
/* flags:
	O_RDONLY	:	只读
	O_WRONLY	:	只写
	O_RDWR		:	可读写
	O_CREAT		:	创建文件并设置权限
	O_EXCL		:	测试文件是否存在
	O_NOCTTY	:
	O_TRUNC		:	文件存在则删除原有数据
	O_APPEND	:	添加
*/
// mode:表述权限,是一个八进制数
  1. 成功则返回文件描述符,出错则返回EOF
  2. 打开已存在的文件则使用2个arguments
  3. 创建文件时需要3个arguments,最后一个是文件权限
  4. 设备文件只能打开不能创建

文件的关闭

#include <unistd.h>
int close(int fd);
// 成功返回0,失败返回EOF

文件的读写

// 读操作
#include <unistd.h>
ssize_t read(int fd,void *buf,size_t count);
//成功则返回实际读取的字符数
// 写操作
#include <unistd.h>
ssize_t write(int fd,void *buf,size_t count);
// //成功则返回实际写入的字符数

读取文件目录

#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
// 可以使用man readdir 查看帮助文档

修改文件的访问权限

#include <sys/stat.h>
int chmod(const char *path,mode_t mode);
int fchmod(int fd , mode_t mode);

获取文件属性

#include <sys/stat.h>
int stat(const char *path,struct stat *buf);
int lstat(const char *path,struct stat *buf);
int fstat(int fd,struct stat *buf);
  1. 成功返回0,否则返回EOF
  2. lstat和stat区别:如果path是符号链接文件,则stat()返回目标文件属性,lstat()返回链接文件属性
struct stat{
	mode_t st_mode;
	uid_t st_uid;
	gid_t st_gid;
	off_t st_size;
	time_t st_mtime; // 最后的修改时间
};

定位文件

#include <unistd.h>
off_t lseek(int fd , off_t offset,int whence);
// 成功则返回当前文件的读写位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值