Linux文件操作常用函数

函数列表

fileno

#include <stdio.h>
//获取stream对应的文件描述符
//返回值为文件描述符
int fileno(FILE * stream);

fstat

#include <sys/types.h>
#inlcude <sys/stat.h>
#include <unistd.h>
//获取fileID对应的文件信息,存放到buf中
//成功执行返回0,失败返回-1,错误存于errno
int fstat(inf fileID, struct stat *buf);
i64 length = buf->st_size;

ftell

#include <stdio.h>
//获取文件流目前的读写位置offset
//调用成功返回目前的读写位置,有错误返回-1,errno存放错误代码
long ftell(FILE *stream);
strerror(errno)

fseek

#include <stdio.h>
//将stream指向的文件指针据whence往后位移offset(可以为负)
//调用成功返回0,错误返回-1,errno会存放错误代码
int fseek(FILE *stream, long offset, int whence)
whence = SEEK_SET//文件开头位置
whence = SEEK_CUR//文件当前位置
whence = SEEK_END//文件末尾位置
eno == EBADF //Not a Seekable File
eno == EINVAL //Internal error
//fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置

fread

#include <stdio.h>
//从stream中读取字符数为size*nmemb
//返回实际读到的数目,如果比nmemb小,则可能读到了文件尾或有错误发生,这时必须用feof()或ferror()
size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);

fwrite

#include <stdio.h>
//将ptr指向的地址中的数据写入到stream指向的文件中,总写入字符数为size*nmemb
//返回实际写入的nmemb数目
size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);

fflush

#include <stdio.h>
//将缓冲区内的数据写回参数stream指定的文件中
//成功返回0,失败返回EOF
int fflush(FILE *stream);
fflush(NULL);//将所有打开的文件数据更新
errno == EBADF //指定的文件违背打开,或打开状态为只读

fsync&fdatasync

#include <unistd.h>
//对文件属性和数据进行同步
int fsync(int fd);
//对文件数据进行同步
int fdatasync(int fd);

fclose

#include <stdio.h>
//此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。
//成功返回0, 错误返回EOF
int fclose(FILE *stream);
errno == EBADF//参数stream非已打开的文件

fopen

#include <stdio.h>
//文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中
FILE * fopen(const char * path, const char * mode);
//path 路径 
//mode
/*
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消
失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容
会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,
如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会
被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文
件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的
内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组
合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯
文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen
()所建立的新文件会具有
S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值