文件IO基本函数介绍及使用

您所在的位置:网站首页 astroby 文件IO基本函数介绍及使用

文件IO基本函数介绍及使用

#文件IO基本函数介绍及使用| 来源: 网络整理| 查看: 265

目录 基础知识介绍文件IO的函数介绍文件IO函数实现图片的拷贝

基础知识介绍

1、文件IO是不带缓冲区的,只有标准IO有缓冲区 2、文件IO函数由操作系统提供,与操作系统绑定,又称之为系统调用函数 3、标准IO是通过流指针对文件进行操作,文件IO则是通过文件描述符来维护一个文件

文件描述符的本质 1、文件描述符总容量1024【getdtablesize()函数可获得该值】 2、特殊的文件描述符0、1、2对应特殊的流指针stdin、stdout、stderr 3、当调用多个函数打开同一个文件的时候,文件描述符不一致,打开多少次就有多少个文件描述符。以及系统文件表、inode表均不一致。但是,inode表中对应的inode的号是同一个文件的inode号。(表不是同一张表,inode号是同一个文件的inode号) 在这里插入图片描述

文件IO的函数介绍

1、open打开文件

int fd_r = open("./1.png", O_RDONLY); //以只读的方式打开对应文件

2、关闭文件

close(fd_r);

3、读取文件内容,读取到sizeof-1个字符串

res = read(fd_r, buf, sizeof(buf)); //read函数读取了size-1个字符串 注意: 1. read函数读取数据,不会自动补充\0, 所以建议读取字符串前,先清空字符串。 2. size_t count:如果后序代码需要依据'\0'位置,例如%s打印,或者string函数族等函数操作读取到的字符串。 则调用函数的时候,需要记住手动保留出\0位置 3. read函数遇到空格 \n 新的一行,不会停止读取。

4、写操作函数

write(fd_w, buf, res); //最后一个参数res,读取多少写入多少

5、lseek函数,修改文件的偏移量

off_t size = lseek(fd, 0, SEEK_END); printf("size = %ld\n", size);

6、umask函数,重置文件权限掩码 一般放在创建新文件前面

//设置mask,后续设置打开文件的权限 umask(0); 文件IO函数实现图片的拷贝

程序实例

#include #include #include #include #include #include int main(int argc, const char *argv[]) { //以读的方式打开源文件 int fd_r = open("./1.png", O_RDONLY); //以写的方式打开目标文件 int fd_w = open("./2.png", O_WRONLY | O_CREAT | O_TRUNC, 0664); //循环读取和写入 ssize_t res = 0; char buf[32] = ""; while(1) { bzero(buf, sizeof(buf)); //清空字符串 res = read(fd_r, buf, sizeof(buf)); //read函数读取了size-1个字符串 if(0 == res) break; //文件读取完毕 //将读取的文件执行写入操作 write(fd_w, buf, res); //最后一个参数res,读取多少写入多少 } //关闭文件 close(fd_r); close(fd_w); return 0; }

运行结果

ubuntu@ubuntu:06-1-test$ diff 1.png 2.png //查看拷贝后的图片是否相同,如果不同会有提示二进制文件不同


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3