一种读取FAT磁盘文件的方法和装置制造方法及图纸

技术编号:4251352 阅读:272 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种读取FAT磁盘文件的方法,预先对FAT格式的磁盘分区中特定类型的文件进行全分区搜索,为每一个搜索到的文件分配唯一的索引号;在内存中保存N个索引号连续的文件目录项位置信息的序列;N为自然数;判断所要读取的文件索引号i是否在所述序列内,若是,则直接从序列内获取索引号i对应的文件目录项位置信息;否则,确定搜索方向并将索引号i及其附近的共N个文件目录项位置信息保存到序列内,并从序列中获取目录项位置信息;根据所述目录项位置信息读取文件。本发明专利技术还公开了一种读取FAT磁盘文件的装置。本发明专利技术方案可以在占用较小内存空间的情况下快速读取FAT磁盘文件。

【技术实现步骤摘要】

本专利技术涉及计算机存储
,特别涉及一种读取文件分配表 (FileAllocation Table, FAT)磁盘文件的索引方法和装置。
技术介绍
便携式的数码产品常采用嵌入式系统架构,在主电路板上包括嵌入式存储模块, 存储模块通常包括一个或多个磁盘分区,磁盘分区用于存储图片、视频或音频文件;主电路 板上还包括业务模块,业务模块具有内存,用于将存储模块上的文件读取到内存中并进行 相应的业务,例如显示图片或者播放音视频文件等。所述内存可以是闪存或非易失存储器。 在一些采用嵌入式系统的数码产品读取存储模块上的文件并进行相应的业务的 过程中,通常会搜索磁盘分区下的所有图片、音乐或者视频文件,读取文件内容后进行解 码,然后显示或者播放。所述嵌入式数码产品可以是数码相框、数码伴侣、数码相机、多媒体 播放器等。所述搜索并打开文件的过程,一般是根据所有文件的全路径名,执行文件的打开 操作。具体地说,通过逐级解析目录名,查找其目录项,再由当前目录的目录项找到子目录 的目录项,最终在目标文件所在的目录项位置获取目标文件的所有信息。如果文件分布在 许多不同的多级目录中、或者同一目录下包含很多文件时,这种打开文件的方法变得非常 缓慢,在嵌入式系统中,会直接导致性能的降低。现有技术还有另一种打开文件的方案在搜索到所有文件后,分别将其全路径保 存在内存中,以便在打开前不必搜索。但这种方式同样需要解析输入的路径名,才能逐级查 找到最终的子目录,获取目录项内的信息。根据数码产品常用的FAT规范,保存一个文件的 全路径名最多需要80字节,当文件数量庞大时,所保存的文件全路径名就会占用内存相当 一部分存储空间,这在嵌入式系统应用中,会导致硬件成本的上升。
技术实现思路
有鉴于此,本专利技术的目的在于,提出一种读取FAT磁盘文件的方法和装置,可以占 用较小内存实现快速读取FAT磁盘文件。本专利技术实施例提出一种读取FAT磁盘文件的方法,包括如下步骤预先对FAT格式的磁盘分区中特定类型的文件进行全分区搜索,为每一个搜索到 的文件分配唯一的索引号;在内存中保存N个索引号连续的文件目录项位置信息的序列;N 为自然数;判断所要读取的文件索引号i是否在所述序列内,若是,则直接从序列内获取索 引号i对应的文件目录项位置信息;否则,确定搜索方向并将索引号i及其附近的共N个文 件目录项位置信息保存到序列内,并从序列中获取目录项位置信息;根据所述目录项位置信息读取文件。较佳地,在内存中保存如下内容全分区最小索引号及该索引号对应文件的全位置信息;全分区最大索引号及该索引号对应文件的文件全位置信息;序列元素对应的最大索引号及该索引号对应文件的文件 全位置信息;以及序列元素对应的最小索引号及该索引号对应文件的文件全位置信息;所 述文件全位置信息包括文件目录项位置信息、文件目录项在其所在目录的目录项中的位置 偏移以及文件所在目录的簇号;所述判断所要读取的文件索引号i是否在所述序列内,若是,则直接从序列内找 到文件目录项位置信息;否则,确定搜索方向并将索引号i及其附近的共N个文件目录项位 置信息保存到序列内,并从序列中获取目录项位置信息;根据所述目录项位置信息读取文 件包括判断所要读取的文件索引号i是否在序列元素对应的最小索引号到序列元素对 应的最大索引号的范围内,若是,则从序列元素中找到索引号i对应的文件目录项位置信 息,并根据所找到的文件目录项位置信息读取所述磁盘分区上的文件;否则,在全分区最小索引号、全分区最大索引号、序列元素对应的最大索引号和序 列元素对应的最小索引号这四个索引号之间取与i的差值最小的索引号,计为k,并以索引 号k对应的文件的全位置信息为起点确定搜索方向;以索引号k对应的文件的全位置信息为起点,以所确定的搜索方向进行所述类型 文件的部分搜索,搜索到包含索引号i的连续的N个索引号,将所搜索到的N个索引号对应 的目录项位置信息保存为序列元素;并根据所保存的序列元素中、索引号i对应的文件目 录项位置信息读取所述磁盘分区上的文件。所述为每一个搜索到的文件分配唯一的索引号为按照搜索结果的顺序号作为该 文件的索引号。所述序列的维数为2的正整数幂次。所述以索引号k对应的文件的全位置信息为起点确定搜索方向包括比较索引号i与索引号k的大小,当i < k时向全分区搜索的相反方向执行部分 搜索,否则向全分区搜索的相同方向执行部分搜索。所述包含索引号的连续的N个索引号为索引号从i到i+Ν-Ι的N个索引号;或者,将索引号从i_(N/2)到i+(N/2)_l的N个索引号。所述以索引号k对应的文件的全位置信息为起点,以所确定的搜索方向进行所述 类型文件的部分搜索的步骤包括判断所搜索到的N个索引号中的最小索引号Ml是否小于内存中已保存的序列元 素对应的最小索引号,若是,则将Ml保存为新的序列元素对应的最小索引号,以内存中已 保存的全分区最小索引号对应文件的全位置信息为起点,向全分区搜索的相同方向搜索所 述类型文件;或者,判断所搜索到的N个索引号中的最大索引号M2是否大于内存中已保存的序 列元素对应的最大索引号,若是,则将M2保存为新的序列元素对应的最大索引号,以内存 中已保存的全分区最大索引号对应文件的全位置信息为起点,向全分区搜索的相反方向搜 索所述类型文件。其特征在于,所述以索引号k对应的文件的全位置信息为起点,以所确定的搜索 方向进行所述类型文件的部分搜索,搜索到包含索引号i的连续的N个索引号包括在已保存的文件目录项位置信息中查找是否有需要保留的内容,若是,则跳过所 述需要保留的内容,并更新其余的文件目录项位置信息。本专利技术实施例还提出一种读取FAT磁盘文件的装置,包括全分区搜索模块、存储 模块、读取模块和部分搜索模块;全分区搜索模块,用于对FAT格式的磁盘分区中特定类型的文件进行全分区搜 索,为每一个搜索到的文件分配唯一的索引号;存储模块,包括N维的序列存储单元,所述序列存储单元用于保存所 述全分区搜 索模块搜索到的N个索引号连续的文件目录项位置信息;根据来自部分搜索模块的索引号 i及其附近共N个文件的目录项位置信息,对所保存的文件目录项信息进行更新;读取模块,用于判断所要读取的文件索引号是否在所述存储模块的序列存储单元 内,若是,则直接从序列存储单元获取文件目录项位置信息;否则,确定搜索起点以及搜索 方向并向部分搜索模块发送搜索指令;待存储模块存储的内容更新后,从序列存储单元中 找到索引号i对应的文件目录项位置信息,并根据所找到的文件目录项位置信息读取所述 磁盘分区上的文件;部分搜索模块用于以来自读取模块的搜索起点为起点,以读取模块所确定的搜索 方向进行部分搜索,将搜索到的索引号i及其附近共N个文件的目录项位置信息发送至存 储模块。较佳地,所述存储模块保存全分区最小索引号及该索引号对应文件的全位置信 息;全分区最大索引号及该索引号对应文件的文件全位置信息;序列元素对应的最大索引 号及该索引号对应文件的文件全位置信息;以及序列元素对应的最小索引号及该索引号对 应文件的文件全位置信息;所述文件全位置信息包括文件目录项位置信息、文件目录项在 其所在目录的目录项中的位置偏移以及文件所在目录的簇号;所述读取模块,用于判断所要读取的文件的索引号i是否在存储模块保存本文档来自技高网
...

【技术保护点】
一种读取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[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1