Linux开发——文件IO open、read、write、close函数的使用及实现文件复制

前言

如何读取文件?文件操作跟把大象放进冰箱是一样的。打开文件、写入内容、关闭文件。文件操作可以用linux提供的open、read、write、close等函数。因此实现文件复制的流程就是:打开文件–>读取源文件内容–>将内容写入目的文件–>关闭文件。

open()函数

open()函数用来打开一个文件,返回一个文件描述符。linux下一切皆文件,默认打开标准输入、标准输出、错误输出,分别对应文件描述符0、1、2。当打开一个文件时,文件描述符编号依次从小到大,也就是从3开始(0、1、2没有关闭的情况下)。
open()函数参数说明:pathname:文件的路径名,flags:打开方式(只读、读写等)
mode(可选参数):给文件赋予相应权限,如0644,也可以用宏,具体参考手册(linux输入:man 2 open)。

creat()函数用于创建文件,一般不用。因为可以用open()函数在flags参数中加上CREAT,表示若文件不存在则创建。多个选项相或实现。
open()原型

read()函数

同样,我们来看看linux手册中的函数原型。read() 从文件描述符 fd 中读取 count 字节的数据并放入从 buf开始的缓冲区中.

fd:文件描述符
buf:内容缓冲。一般定义一个缓冲数组存放读取的内容,将数组名带入参数。
count:要读取内容的大小。用数组存放内容时,一般来说count就是数组的大小
返回值:返回实际读取到的字节数,0表示读完
read()原型

write()函数

write 向文件描述符 fd 所引用的文件中写入 从 buf 开始的缓冲区中 count 字节的数据.
write()和read()操作是差不多的,形参都是相同的,函数名不同而已。
fd:文件描述符
buf:要写入的内容
count:要写入内容的大小
返回值:返回实际写入的大小
write()原型

close()函数

close()就很简单了,功能是关闭一个文件,将文件描述符传递进去,然后调用。
返回值:0表示成功 -1表示出错
close()原型

文件复制

打开文件–>读取源文件内容–>将内容写入目的文件–>关闭文件

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

#define bufsize 1024
int main(){
    //打开文件
    int src = open("./test",O_RDONLY);//以只读形式打开test文件,返回一个文件描述符
    int dest = open("./copy_test",O_RDWR|O_CREAT,0644);//读写方式打开,644是权限

    //读取test内容,写入copy_test
    char buf[bufsize];//定义字符缓冲数组,用于存放读取到的文件内容
    int read_size,write_size = 0;
    while((read_size = read(src,buf,bufsize))!= 0)//返回0说明读取完毕
    {
        write_size += write(dest,buf,read_size);
    }
    printf("写入文件内容大小为:%d\n",write_size);

    //关闭文件
    close(src);
    close(dest);
    return 0;
}
  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式Linux充电站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值