![文件系统技术内幕:大数据时代海量数据存储之道](https://wfqqreader-1252317822.image.myqcloud.com/cover/284/43738284/b_43738284.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.3 文件内容的读/写实例
前面我们介绍了访问文件的一般流程,可能大家感觉还会有点抽象。本节将通过一个实例来实际演示如何读/写一个文件。这个实例主要模拟Linux的cp命令,也就是实现文件的拷贝功能。
本实例主要用到了文件操作的4个函数,open()、read()、write()和close()等。这些函数很简单,我们通过其名称就可以看出作用。下面看一下该实例的代码(见代码2-1)。
代码2-1 拷贝文件的实现
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_34_1.jpg?sign=1739592491-XVSry7m4cs0XQoO26v9296MXGbNEWJp7-0-431a2bcfa9e705ded1e92f44e496e69b)
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_35_1.jpg?sign=1739592491-fY5DwnzTOzhXDt9RGSQcBvnKqVtcYsR6-0-4adb7e290b8193ddb02e4fd198a2a53f)
在该实例中,分别打开两个文件(第24行~第31行),如果目标文件不存在则创建新文件。然后不断循环地从源文件读取数据并写入目标文件(第39行~第50行),直到读完源文件的数据为止。最后将两个文件关闭(第58行~第60行)。
完成上述代码的编写后,我们可以将其编译为一个可执行文件,然后就可以使用该功能了。具体编译的方法如下:
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_35_2.jpg?sign=1739592491-FkuoTzzmLSwoG8OeftYfwUVOl7ci4cw9-0-d52918ff653b9b14a3da6f3e425ccd50)
如果编译没有问题,就可以进行如下测试:
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_35_3.jpg?sign=1739592491-M4N0CcOuWDdtlnA0C9XDW1LwJ6tqPKpw-0-a0d15233535266b8f1e6ad52fb0c8e01)
执行完成上述代码后,我们可以对比一下copy_file.c和dest.c文件的内容。比如使用diff命令,可以发现两者的内容是完全一样的,也就是我们实现了拷贝文件的功能。