基本上所有的操作系统都会有对文件的操作,也叫文件I/O。除开可以C函数库中基本操作外,所有操作系统都会针对各自的特点重新提供一些操作文件的API,下面描述一下linux下的主要文件操作API。
一、函数名称及格式。
creat 函数(相信很多的初学者都会在这个名字上吃点小亏)- 创建文件
int creat(const char* pathname,mode_t mode); /* 返回值 :若成功返回为只写打开的文件描述符,若错误则返回 -1*/
open 函数 - 打开文件
int open(const char* pathname,int oflag,.../* mode_t mode*/); /* 返回值 :若成功返回为文件描述符,若错误则返回 -1*/close 函数 - 关闭文件
int close(int fileds); /* 返回值 :若成功返回为0,若错误则返回 -1*/lseek 函数 - 移动到文件的指定位置
int lseek(int fileds,off_t offset,int whence); /* 返回值 :若成功返回为新的文件偏移量,若错误则返回 -1*/
read 函数 - 读取文件内容
ssize_t read(int fileds,void*buf,size_t nbytes); /* 返回值:若是成功返回读到字节数,若是文件结尾则返回0,若是错误则返回-1*/write 函数 - 向文件中写入内容
ssize_t write(int fileds,const void*buf,size_t nbytes); /* 返回值:若是成功返回写入字节数,若是错误则返回-1*/
access 函数 - 判断文件的读写权限
int access(const char* pathname,int mode); /*返回值: 成功返回1,错误返回0*/
二、对应的头文件表:
#include <fcntl.h> 时,可以使用函数:creat();open();access();
#include <unistd.h>时,可以使用函数:close();read();write();lseek();
三、需要注意点说明:
1. 由于creat函数的很多限制,目前常用如下方式替代掉creat函数新建文件:
open(pathname,O_WRONLY | O_CREAT | O_TRUNC,mode);2. 读取数据时,若是数据量少于nbytes,则返回实际的读取数。
3. 文件的操作是按照字节的方式操作,因此在计算是一般按照字节计算相应的值。