本篇博客来讲述Linux中的新一模块--文件IO,我们来做简单的介绍和陈述。
在笔者之前的文章之中,已经对C语言中的文件操作做了简要介绍,我们旧事重提,再次进行一个简要的回顾。
目录
1.文件的操作
1.1打开文件
1.2向文件写入数据
1.3从文件读取数据
1.4关闭文件
1.5跳转文件读写位置
1.6总结
文件操作中,首先我们我们需要打开文件,返回文件的操作句柄,凭借着操作句柄来对文件进行相关操作。(有文件对应的句柄才可以对文件进行相应的操作)
FILE *fopen(char *pathname, const char *mode);
其中,pathname即是需要打开的文件名;mode是打开方式,不同的打开方式即代表对文件不同的操作权限。
对于打开文件方式的选项,在之前的博客中已经有详细介绍,不过为了方便读者,在此笔者再重新介绍一次:
r:以只读方式打开文件;(若文件不存在会出错)
w:以只写的方式打开文件;(若文件不存在会自动创建新文件,若文件已经存在则会清空文件原有内容)
a:以追加写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则写入数据时总是会将新的数据追加到文件末尾)
r+:以可读可写的方式打开文件;(若文件不存在就可以出错,若文件已经存在会从文件起始位置进行操作,会覆盖文件原有内容)
w+:以可读可写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则会清空文件原有内容)
a+:以可读和追加写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则写入数据时总是将新的数据追加文件末尾)
b:以二进制形式打开文件,默认是以文本的形式打开。(在文本模式下,\n操作会被解释为\r\n,代表换行和光标移动)
值得注意的是打开方式--b,它是可以同其他打开方式组合,产生叠加的打开效果组合。
打开文件后,必然伴随着对文件的一些操作,可能是读取、修改、删除和添加(增删改查)文件内容,我们先来讲述向文件中写入数据的操作。
size_t fwrite(char *data, int bsize, int nmem, FILE *fp);
其中,data是写入数据的地址,bsize是一块数据的大小,nmem是块的个数,也就是说 bsize * nmen才是真正的数据大小,fp则是目标文件的操作句柄。
size_t fread(char *buf, int bsize, int nmem, FILE *fp);
fread函数用于向指定文件读取数据到指定的空间buf之中,读取数据的大小计算方式同fwrite函数。
int fclose(FILE *fp);
关闭操作文件,释放对应资源。成功返回0。
int fseek(FILE *fp, int offset, int whence);
其中whence是跳转位置,offset是偏移量。对于whence的跳转位置,我们有三个关键字来对其进行形容:
还是老方法,我们对上述接口进行一个简单的使用,来对知识点作以巩固。
设计一个简单程序内容,对上述函数加以使用,具体的函数使用说明和使用细节,在上述代码中的注释中笔者做了概述。
然后我们来观察上述代码的具体运行结果。
在删除原有的test.txt文件后,我们对test进行了执行,发现程序打印出了数据data的内容,打开目录发现text.txt成功创建,而且data内容也完整的写入到了文件test.txt之中。
这些功能的实现,正如我们程序中的设计。即创建文件,向文件写入数据,读取文件内容。