底层文件操作函数
通过文件描述符与底层文件相关联,各函数通过文件描述符来对文件进行操作。
1、open函数
头文件:#include <unistd.h>
函数原型:int open(count char *pathname, int flags );
int open(count char *pathname, int flags, mode_t mode )
open()函数以flags|mode 方式打开以参数pathname指向字符串为路径的文件,如成功则返回一个整型的文件描述符,read()和write()函数就可以对文件进行读写操作。
成功:返回唯一的fd;失败:返回-1,错误记录在errorno中。
2、close函数
int close(int fd);
3、read函数
size_t read(int fd, void *buf, size_t count);
从文件描述符fd指向的文件读取count个字节的数据,存入buf指针指向的内存单元。
4、write函数
size_t write(int fd, const void *buf, size_t count);
将buf所在内存中的count个字节的数据写入fd指向的文件中。
eg:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/errno.h>
main()
{
int fd = 0;
int size = 0;
char s[] = "this is a test";
char buffer[50];
fd = open("test1.txt", O_WRONLY|O_CREAT|O_EXCL);
if(fd < 0){
printf("open write error,error:%d",errno);
}
write(fd, s, sizeof(s));
close(fd);
fd = open("test1.txt", O_RDONLY);
if(fd < 0)
printf("open read error");
read(fd, buffer, sizeof(buffer));
printf("buf:%s\n",buffer);
close(fd);
}
另外对于errno的详细信息可以这样查看:
/****************************获取错误代码描述**************/
#include <string.h>
#include <errno.h> /* for strerror */
#include <stdio.h>
int main(int argc, char ** argv)
{
int i = 0;
for(i = 0; i < 256; i++)
printf("errno.%02d is: %s\n", i, strerror(i));
return 0;
}
/*****************************************************************/
5、文件移动和重命名函数
1)remove函数
头文件:#include <stdio.h>
函数原型:remove(const char *pathname)
删除参数pathname指定的文件或目录,若是文件则调用unlink处理;若是目录,调用函数rmdir()处理。
#include <stdio.h>
main()
{
char s[]="test.txt";
int flag = 0;
flag =remove(s);
if(flag == 0){
printf("delete file successfully\n");
}else
printf("failed\n");
}
运行结果:
delete file successfully
2)rename函数
int rename(const char *oldpath, const char *newpath);
成功返回0,失败返回-1,错误记录在errno中;
#include <stdio.h>
main()
{
int flag = 0;
char old[]="out.txt";
char new[]="/root/new.txt";
//将当前目录下的out.txt文件重命名为/root目录下的new.txt文件。
flag = rename(old, new);
if(flag == 0)
printf("ok\n");
else
printf("error\n");
}
6、access函数
头文件:#include <stdio.h>
函数原型:int access(const char *pathname, int mode);
功能:检查进程是否有读写权限,参数mode有R_OK(读)、 W_OK(写)、 X_OK(执行)、 F_OK(判断文件是否存在)
成功返回0,失败返回-1,错误记录在errno中;