【技术实现步骤摘要】
本专利技术涉及计算机存储
,特别涉及一种读取文件分配表 (FileAllocation Table, FAT)磁盘文件的索引方法和装置。
技术介绍
便携式的数码产品常采用嵌入式系统架构,在主电路板上包括嵌入式存储模块, 存储模块通常包括一个或多个磁盘分区,磁盘分区用于存储图片、视频或音频文件;主电路 板上还包括业务模块,业务模块具有内存,用于将存储模块上的文件读取到内存中并进行 相应的业务,例如显示图片或者播放音视频文件等。所述内存可以是闪存或非易失存储器。 在一些采用嵌入式系统的数码产品读取存储模块上的文件并进行相应的业务的 过程中,通常会搜索磁盘分区下的所有图片、音乐或者视频文件,读取文件内容后进行解 码,然后显示或者播放。所述嵌入式数码产品可以是数码相框、数码伴侣、数码相机、多媒体 播放器等。所述搜索并打开文件的过程,一般是根据所有文件的全路径名,执行文件的打开 操作。具体地说,通过逐级解析目录名,查找其目录项,再由当前目录的目录项找到子目录 的目录项,最终在目标文件所在的目录项位置获取目标文件的所有信息。如果文件分布在 许多不同的多级目录中、或者同一目录下包含很多文件时,这种打开文件的方法变得非常 缓慢,在嵌入式系统中,会直接导致性能的降低。现有技术还有另一种打开文件的方案在搜索到所有文件后,分别将其全路径保 存在内存中,以便在打开前不必搜索。但这种方式同样需要解析输入的路径名,才能逐级查 找到最终的子目录,获取目录项内的信息。根据数码产品常用的FAT规范,保存一个文件的 全路径名最多需要80字节,当文件数量庞大时,所保存的文件全路径名就会 ...
【技术保护点】
一种读取FAT磁盘文件的方法,其特征在于,包括如下步骤:预先对FAT格式的磁盘分区中特定类型的文件进行全分区搜索,为每一个搜索到的文件分配唯一的索引号;在内存中保存N个索引号连续的文件目录项位置信息的序列;N为自然数;判断所要读取的文件索引号i是否在所述序列内,若是,则直接从序列内获取索引号i对应的文件目录项位置信息;否则,确定搜索方向并将索引号i及其附近的共N个文件目录项位置信息保存到序列内,并从序列中获取目录项位置信息;根据所述目录项位置信息读取文件。
【技术特征摘要】
一种读取FAT磁盘文件的方法,其特征在于,包括如下步骤预先对FAT格式的磁盘分区中特定类型的文件进行全分区搜索,为每一个搜索到的文件分配唯一的索引号;在内存中保存N个索引号连续的文件目录项位置信息的序列;N为自然数;判断所要读取的文件索引号i是否在所述序列内,若是,则直接从序列内获取索引号i对应的文件目录项位置信息;否则,确定搜索方向并将索引号i及其附近的共N个文件目录项位置信息保存到序列内,并从序列中获取目录项位置信息;根据所述目录项位置信息读取文件。2.根据权利要求1所述的方法,其特征在于,在内存中保存如下内容全分区最小索引号及该索引号对应文件的全位置信息;全分区最大索引号及该索引号 对应文件的文件全位置信息;序列元素对应的最大索引号及该索引号对应文件的文件全位 置信息;以及序列元素对应的最小索引号及该索引号对应文件的文件全位置信息;所述文 件全位置信息包括文件目录项位置信息、文件目录项在其所在目录的目录项中的位置偏移 以及文件所在目录的簇号;所述判断所要读取的文件索引号i是否在所述序列内,若是,则直接从序列内找到文 件目录项位置信息;否则,确定搜索方向并将索引号i及其附近的共N个文件目录项位置信 息保存到序列内,并从序列中获取目录项位置信息;根据所述目录项位置信息读取文件包 括判断所要读取的文件索引号i是否在序列元素对应的最小索引号到序列元素对应的 最大索引号的范围内,若是,则从序列元素中找到索引号i对应的文件目录项位置信息,并 根据所找到的文件目录项位置信息读取所述磁盘分区上的文件;否则,在全分区最小索引号、全分区最大索引号、序列元素对应的最大索引号和序列元 素对应的最小索引号这四个索引号之间取与i的差值最小的索引号,计为k,并以索引号k 对应的文件的全位置信息为起点确定搜索方向;以索引号k对应的文件的全位置信息为起点,以所确定的搜索方向进行所述类型文件 的部分搜索,搜索到包含索引号i的连续的N个索引号,将所搜索到的N个索引号对应的目 录项位置信息保存为序列元素;并根据所保存的序列元素中、索引号i对应的文件目录项 位置信息读取所述磁盘分区上的文件。3.根据权利要求2所述的方法,其特征在于,所述为每一个搜索到的文件分配唯一的 索引号为按照搜索结果的顺序号作为该文件的索引号。4.根据权利要求2所述的方法,其特征在于,所述序列的维数为2的正整数幂次。5.根据权利要求2所述的方法,其特征在于,所述以索引号k对应的文件的全位置信息 为起点确定搜索方向包括比较索引号i与索引号k的大小,当i < k时向全分区搜索的相反方向执行部分搜索, 否则向全分区搜索的相同方向执行部分搜索。6.根据权利要求2所述的方法,其特征在于,所述包含索引号的连续的N个索引号为索引号从i到i+N-1的N个索引号;或者,将索引号从i_ (N/2)到i+ (N/2) -1的N个索引号。7.根据权利要求2所述的方法,其特征在于,所述以索引号k对应的文件的全位置信息为起点,以所确定的搜索方向进行所述类型文件的部分搜索的步骤包括判断所搜索到的N个索引号中的最小索引号Ml是否小于内存中已保存的序列元素对 应的最小索引号,若是,则将Ml保存为新的序列元素对应的最小索引号,以内存中已保存 的全分区最小索引号对应文件的全位置信息为起点,向全分区搜索的相同方向搜索所述类 型文件;或者,判断所搜索到的N个索引号中的最大索引号M2是否大于内存中已保存的序列元 素对应的最大索引号,若是,则将M2保存为新的序列元素对应的最大索引号,以内存中已 保存的全分区最大索引号对应文件的全位置信息为起点,向全分区搜索的相反方向...
【专利技术属性】
技术研发人员:何亚康,叶凯,
申请(专利权)人:北京炬力北方微电子有限公司,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。