Day16 内容梳理:
C语言学习笔记 Day14(文件管理--上)-CSDN博客
C语言学习笔记 Day15(文件管理--中)-CSDN博客
目录
Chapter 10 文件操作
10.5 文件状态
10.6 文件的随机读写 fseek()、rewind()
(1)fseek():移动光标并开始读写
(2)rewind():将光标重置回文件开头
10.7 文件的删除remove()、重命名rename()
(1)删除remove():
(2)重命名、移动位置rename():
10.8 文件缓冲区
(1)基础概念
(2)更新缓冲区
Chapter 10 文件操作
10.5 文件状态
获取文件的大小
10.6 文件的随机读写 fseek()、rewind()
(1)fseek():移动光标并开始读写
之前的文件都是顺序读写,而在可以在随机读写中,改变文件光标的位置。
先创建好一个名为“随机读写.txt”的文本文件,写入如下内容:
fseek()函数的三个参数:文件指针、offset位移数、whence移动的起始位置
offset:往左偏移是负数,往右偏移是正数
whence有三种类型的参数:
SEEK_SET:从文件开头移动offset个字节
SEEK_CUR:从当前位置移动offset个字节
SEEK_END:从文件末尾移动offset个字节
因为文本文件中,每一行的结尾是\r\n(不会显示在文本中),算两个字节,所以算offset的时候需要加上这2个字节。
\r\n存在于除了末尾那行以外的其他行,所以从末尾开始偏移的话不需要考虑\r\n的字节。
代码如下,把三种类型的whence参数都试写了一遍:
上图代码的打印结果如下:正常打印了两行,跳到上一行打印了一下,跳到文件开头行打印了一下,又跳到文件末尾行打印了一下
(2)rewind():将光标重置回文件开头
使用方式:rewind(文件指针)
作用效果等同于fseek(文件指针,0,SEEK_SET)
10.7 文件的删除remove()、重命名rename()
(1)删除remove():
需要注意的是,以这样的方式删除的文件不会进入到回收站中,难以找回,慎用remove()。
删除这个文件:
代码如下:
运行结果:
文件中也确实没有abc.txt了:
(2)重命名、移动位置rename():
①重命名:
把“解密1.txt”更名为”解密加密的原始语句.txt”
代码和效果如下:
里面的文本没有发生变动,只有文件名被改了。
②移动位置:
把D盘的“加密1.txt”移动至D盘的“Program Files”文件夹中
移动效果:
10.8 文件缓冲区
(1)基础概念
通常用“缓冲文件系统”来处理数据文件。
缓冲文件系统是指系统自动在内存区为程序中每个在使用的文件开辟一个文件缓冲区,暂存从内存向磁盘运输的文件,装满整个缓冲区后才一起送到磁盘中。就像是定时定点到站的公交车一样。
缓冲区的作用是协调低速的输入输出设备和高速的CPU,避免低速的输入输出设备占用CPU,从而解放出CPU并使其能够高效率工作。
缓冲区有两种保存方式,一种是按固定时间间隔保存数据(比如每10秒保存一下),另一种是按固定数据量保存数据(比如每100字保存一下)。
(2)更新缓冲区
不太建议实际写代码时按下图中这样写,因为频繁和硬盘交互会损伤硬盘。最好是手动规定一个字节长度,代码到这个长度了再保存。
一边输入,一边保存到了文本文件中: