内容纲要
本课程提供文件读取的接口。
主要内容
简单来说,文件读取,即沿着文件内容的簇链,将指定范围内的数据读取出来。
文件内容按簇链存储
前面课时中已经提到过,FAT分区中数据区用于存储文件或目录数据。其被划分成很多个大小相同的簇。通过前面课时中,对目录的遍历,我们已经熟悉了簇链的组织结构。那么对于文件,其内容存储也是按相同的簇链方式组织。
在读取时,先定位到指定簇及簇中的偏移,然后根据需要读取的数据量,沿着簇链读取即可。
重点难点
本课程中的重点就在于怎样处理扇区中的位置问题。如下图所求,我们能做的是读取指定扇区,读取指定簇,但是某个扇区/簇内的数据并不是全都需要读取,可能只需要读取一部分。这就需要xfile_read剔除那些不需要的数据。
读取起始和结束位置的边界对齐问题
主要问题在于:磁盘和SD等都是块设备,读取时必须以整个块为单位读取。但是读取的起始和结束位置,可能位于扇区边界内部。所以,视频中提到了要处理扇区边界对齐的情况。
此处,还要考虑到数据是簇为单位分配存储的,所以在读取时还要考虑到簇的影响。
在xfile_read中将读取的过程简化为两种子过程,综合应对所有不同的位置问题。