![文件系统技术内幕:大数据时代海量数据存储之道](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=1739279664-pymcbpmK8YuI7B7AD9NbXnwVIMOawK5w-0-a577f7cccc9560a699c4d0fbf33ead03)
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_35_1.jpg?sign=1739279664-k6SqCb3cNVFYn14W9eIn3mygfCP4CS6k-0-345ffb986dea962f73b2b8afa6af678e)
在该实例中,分别打开两个文件(第24行~第31行),如果目标文件不存在则创建新文件。然后不断循环地从源文件读取数据并写入目标文件(第39行~第50行),直到读完源文件的数据为止。最后将两个文件关闭(第58行~第60行)。
完成上述代码的编写后,我们可以将其编译为一个可执行文件,然后就可以使用该功能了。具体编译的方法如下:
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_35_2.jpg?sign=1739279664-PFxj3m497oB7futY9opx71WPzCyTyYWa-0-6eda07d4eaae5fc4a36145b9fbf94f12)
如果编译没有问题,就可以进行如下测试:
![](https://epubservercos.yuewen.com/F77410/23020648909757306/epubprivate/OEBPS/Images/42478_35_3.jpg?sign=1739279664-YAUWUlbptQmaq35C9zvtk65Y0QVR5YWx-0-2426bedaf7bcecb860bc05d346eb29ce)
执行完成上述代码后,我们可以对比一下copy_file.c和dest.c文件的内容。比如使用diff命令,可以发现两者的内容是完全一样的,也就是我们实现了拷贝文件的功能。