Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR FINDING FILES OR FOLDERS
Document Type and Number:
WIPO Patent Application WO/2012/171434
Kind Code:
A1
Abstract:
A method for finding files or folders, including the following steps: acquiring a hard disk partition format; acquiring the recording addresses of all the file or folder attributes in the hard disk according to the hard disk partition format, and reading all the file or folder attributes into an internal memory according to the recording addresses of the file or folder attributes; and traversing and finding all or part of the files or folders in all the file or folder attributes read into the internal memory.Also provided is a device for finding files or folders for realizing the method above.The method and device for finding files or folders in the present invention can find files or folders rapidly, and reduce occupied computer resources.

Inventors:
TANG ZHI (CN)
Application Number:
PCT/CN2012/076359
Publication Date:
December 20, 2012
Filing Date:
May 31, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BEIJING QIHOO TECH CO LTD (CN)
TANG ZHI (CN)
International Classes:
G06F17/30
Foreign References:
CN101650737A2010-02-17
CN1776686A2006-05-24
CN102289451A2011-12-21
Attorney, Agent or Firm:
BEIJING RISEHIGH INTELLECTUAL PROPERTY LAW FIRM (CN)
北京润泽恒知识产权代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求 书

1、 一种文件或文件夹查找方法, 其特征在于, 包括以下步骤: 获取硬盘分区格式;

根据硬盘分区格式获取硬盘中所有文件或文件夹属性的记录地址; 并

根据所述文件或文件夹属性的记录地址将所有文件或文件夹属性读 入内存;

在读入内存的所有文件或文件夹属性中遍历查找全部或部分文件或 文件夹。

2、 如权利要求 1所述的方法, 其特征在于, 所述根据硬盘分区格式获 取硬盘中所有文件或文件夹属性的记录地址; 并根据所述文件或文件夹 属性的记录地址将所有文件或文件夹属性读入内存包括:

若硬盘分区格式为 FAT12, FAT16或 FAT32, 从文件分配表获取所有 文件或文件夹属性的记录地址, 并根据文件或文件夹属性的记录地址将 文件分配表中的所有文件或文件夹属性读入内存; 和 /或

若硬盘分区格式为 NTFS ,从主文件表中获取所有文件或文件夹属性 的记录地址, 并根据文件或文件夹属性的记录地址将主文件表中的所有 文件或文件夹属性读入内存。

3、 如权利要求 2所述的方法, 其特征在于, 所述从文件分配表获取所 有文件或文件夹属性的记录地址, 并根据文件或文件夹属性的记录地址 将文件分配表中的所有文件或文件夹属性读入内存包括:

读取 BIOS参数块的内容, 获取文件分配表的起始地址和大小; 确定文件分配表中所有文件或文件夹属性所在记录项的记录起止地 址;

根据确定的所有文件或文件夹属性所在记录项的记录起止地址将文 件分配表中所有文件或文件夹属性读入内存。

4、 如权利要求 2所述的方法, 其特征在于, 所述从主文件表中获取所 有文件或文件夹属性的记录地址, 并根据文件或文件夹属性的记录地址 将主文件表中的所有文件或文件夹属性读入内存包括: 读取 BIOS参数块的内容, 获取主文件表的起始地址和大小; 确定主文件表中所有文件或文件夹属性所在记录项的记录起止地 址;

根据确定的所有文件或文件夹属性所在记录项的记录起止地址将主 文件表中所有文件或文件夹属性读入内存。

5、 如权利要求 2所述的方法, 其特征在于, 所述从主文件表中获取所 有文件或文件夹属性的记录地址, 并根据文件或文件夹属性的记录地址 将主文件表中的所有文件或文件夹属性读入内存包括:

打开元文件 $MFT 来获取整个主文件表的所有文件或文件夹属性所 在记录项的记录地址, 并根据所述文件或文件夹属性所在记录项的记录 地址获取所述文件或文件夹属性。

6、 如权利要求 1所述的方法, 其特征在于, 所述获取硬盘分区格式包 括:

读取主引导记录区的内容, 从所述主引导记录的内容中获取硬盘分 区格式。

7、 如权利要求 2所述的方法, 其特征在于, 所述在读入内存的所有文 件或文件夹属性中遍历查找全部或部分文件或文件夹包括:

确定文件分配表或主文件表的起始地址;

从起始地址开始, 依次偏移文件或文件夹属性所在记录项所占用的 字节数, 直至遍历完成。

8、 如权利要求 7所述的方法, 其特征在于, 所述在读入内存的所有文 件或文件夹属性中遍历查找全部或部分文件或文件夹包括:

确定主文件表中文件或文件夹属性在其所在记录项中的存储位置,在所 述存储位置进行查找。

9、 如权利要求 1所述的方法, 其特征在于, 所述在读入内存的所有文 件或文件夹属性中遍历查找全部或部分文件或文件夹包括:

根据在查找时加入的文件或文件夹特征作为查找条件, 在读入内存的 所有文件或文件夹属性中遍历查找全部或部分文件或文件夹。 10、 如权利文件 9所述的方法, 其特征在于, 所述查找条件包括以下一 种或多种: 文件名、 文件夹名、 创建日期、 最后访问日期和大小。

11、 如权利要求 10所述的方法, 其特征在于, 所述指定文件或文件夹 的查找包括以下一种或几种:

重复文件或文件夹查找、 0字节文件或文件夹查找、 指定文件或文件夹 查找, 以及垃圾文件查找。

12、 如权利要求 11 所述的方法, 其特征在于, 所述方法还包括删除所 述查找到的文件或文件夹。

13、 如权利要求 1所述的方法, 其特征在于, 所述方法还包括: 若出现新的硬盘分区格式,从服务器中获取文件或文件夹属性的记录地 址。

14、 如权利要求 1 所述的方法, 其特征在于, 所述硬盘中所有文件或 文件夹属性包括以下一种或多种:

名称、 大小、 创建时间、 创建日期、 最后访问日期、 最后修改日期。

15、 如权利要求 14所述的方法, 其特征在于, 所述方法还包括: 根据硬盘分区格式获取硬盘中所有文件或文件夹的存放位置。

16、 如权利要求 1至 15任一项所述的方法, 其特征在于, 所述将所 有文件或文件夹属性读入内存包括:

将所有文件或文件夹属性一次读入内存; 或

将所有文件或文件夹属性分段读入内存。

17、 一种文件或文件夹查找装置, 其特征在于, 包括:

硬盘分区格式获取模块, 配置为获取硬盘分区格式;

记录获取模块, 配置为根据硬盘分区格式获取硬盘中所有文件或文 件夹属性的记录地址; 并根据所述文件或文件夹属性的记录地址将所有 文件或文件夹属性读入内存;

查找模块, 配置为在读入内存的所有文件或文件夹属性中遍历查找 全部或部分文件或文件夹。

18、如权利要求 17所述的装置, 其特征在于, 所述记录获取模块包括: 文件分配表记录获取模块, 配置为当硬盘分区格式为 FAT12, FAT16 或 FAT32时, 从文件分配表获取所有文件或文件夹属性的记录地址, 并 根据文件或文件夹属性的记录地址将文件分配表中的所有文件或文件夹 属性读入内存; 和 /或

主文件表记录获取模块, 配置为当硬盘分区格式为 NTFS时,从主文 件表中获取所有文件或文件夹属性的记录地址和属性, 并根据文件或文 件夹属性的记录地址将主文件表中的所有文件或文件夹属性读入内存。

19、 如权利要求 18所述的装置, 其特征在于, 所述文件分配表记录获 取模块包括:

文件分配表起始地址和大小获取模块,配置为读取 BIOS参数块的内 容, 获取文件分配表的起始地址和大小;

记录地址确定模块, 配置为确定文件分配表中所有文件或文件夹属性 所在记录项的记录起止地址;

记录内容读取模块, 配置为根据确定的所有文件或文件夹属性所在 记录项的记录起止地址将文件分配表中所有文件或文件夹属性读入内 存。

20、 如权利要求 18所述的装置, 其特征在于, 所述主文件表记录获取 模块包括:

主文件表起始地址和大小获取模块, 配置为读取 BIOS 参数块的内 容, 获取主文件表的起始地址和大小;

记录地址确定模块, 配置为确定主文件表所有文件或文件夹属性所在 i己录项的 i己录起止地址;

记录内容读取模块, 配置为根据确定的所有文件或文件夹属性所在 记录项的记录起止地址将主文件表中所有文件或文件夹属性读入内存。

21、 如权利要求 18所述的装置, 其特征在于, 所述主文件表记录获取 模块包括:

元文件打开模块, 配置为打开元文件 $MFT 来获取整个主文件表的所 有文件或文件夹属性的记录地址, 并根据所述文件或文件夹属性的记录 地址获取所述文件或文件夹属性。

22、 如权利要求 17所述的装置, 其特征在于, 所述硬盘分区格式获取 模块包括:

主引导记录区内容读取模块, 配置为读取主引导记录区的内容, 从 所述主引导记录的内容中获取硬盘分区格式。

23、 如权利要求 17所述的装置, 其特征在于, 所述查找模块包括: 属性信息区域确定模块, 配置为确定主文件表中文件或文件夹属性在 其所在记录项中的存储位置, 对所述存储位置进行查找。

24、 如权利要求 17所述的装置, 其特征在于, 所述装置还包括: 查找条件添加模块, 配置为根据在查找时加入的文件或文件夹特征作 为查找条件,在读入内存的所有文件或文件夹属性中遍历查找全部或部分 文件或文件夹; 和

展示模块, 配置为展示查找到的文件或文件夹。

25、 如权利要求 24所述的装置, 其特征在于, 所述装置还包括: 处理模块, 配置为删除查找到的文件或文件夹。

26、 如权利要求 17所述的装置, 其特征在于, 所述装置还包括: 文件或文件夹属性记录地址获取模块, 配置为在出现新的硬盘分区格 式, 从服务器中获取文件或文件夹属性的记录地址。

27、 如权利要求 17至 26任一项所述的装置, 其特征在于, 所述记录获 取模块包括:

一次读取模块, 配置为将所有文件或文件夹属性一次读入内存; 或 分段读取模块, 配置为将所有文件或文件夹属性分段读入内存。

28、一种在其上记录有用于执行权利要求 1所述方法的程序的计算机可 读记录介质。

Description:
文件或文件夹查找方法和装置

技术领域

本发明涉及计算机存储数据查找技术领域,特 别是涉及一种文件或文 件夹查找方法和装置。 背景技术

硬盘是现在计算机上最常用的存储设备, 计算机中文件或文件夹都 以文件记录的形式存储在硬盘里。 一个硬盘可以区分为多个分区。 分区 从实质上说就是对硬盘的一种格式化。 当我们创建分区时, 就已经设置 好了硬盘的各项物理参数, 指定了硬盘主引导记录 (即 Master Boot Record, 一般简称为主引导记录区) 和引导记录备份的存放位置。

通常 Windows下从硬盘中查找一个指定的或者全部的 件或文件夹 是调用 FindFirstFile和 FindNextFile这两个 API ( Application Programming Interface , 应用程序编程接口) 来实现的。 实际运用中, 因为硬盘中的文 件或文件夹数量较大, 例如, 十万或者更多, 调用这两个 API会发生数 以万次的 I/O ( Input/Output, 输入 /输出 )操作, 因此查找速度上会较慢。

在 Windows XP操作系统之后加入了索引技术,对于重复操 能实现 快速的查找, 但是在第一次搜索时也还是比较慢的。 另外, 因为频繁的 使用 I/O操作, 还可能造成对计算机资源的占用, 从而使计算机的响应变 得緩慢。 发明内容

本发明所要解决的技术问题是提供一种文件或 文件夹查找方法和装 置, 能够实现快速的文件或文件夹的查找和减少对 计算机资源的占用。

为了解决上述问题, 本发明公开了一种文件或文件夹查找方法, 包 括以下步骤:

获取硬盘分区格式;

根据硬盘分区格式获取硬盘中所有文件或文件 夹属性的记录地址; 并

根据所述文件或文件夹属性的记录地址将所有 文件或文件夹属性读 入内存;

在读入内存的所有文件或文件夹属性中遍历查 找全部或部分文件或 文件夹。

优选地, 所述根据硬盘分区格式获取硬盘中所有文件或 文件夹属性 的记录地址; 并根据所述文件或文件夹属性的记录地址将所 有文件或文 件夹属性读入内存包括:

若硬盘分区格式为 FAT12, FAT16或 FAT32, 从文件分配表获取所有 文件或文件夹属性的记录地址, 并根据文件或文件夹属性的记录地址将 文件分配表中的所有文件或文件夹属性读入内 存; 和 /或

若硬盘分区格式为 NTFS ,从主文件表中获取所有文件或文件夹属性 的记录地址, 并根据文件或文件夹属性的记录地址将主文件 表中的所有 文件或文件夹属性读入内存。

优选地, 所述从文件分配表获取所有文件或文件夹属性 的记录地址, 并根据文件或文件夹属性的记录地址将文件分 配表中的所有文件或文件 夹属性读入内存包括:

读取 BIOS参数块的内容, 获取文件分配表的起始地址和大小; 确定文件分配表中所有文件或文件夹属性所在 记录项的记录起止地 址;

根据确定的所有文件或文件夹属性所在记录项 的记录起止地址将文 件分配表中所有文件或文件夹属性读入内存。

优选地, 所述从主文件表中获取所有文件或文件夹属性 的记录地址, 并根据文件或文件夹属性的记录地址将主文件 表中的所有文件或文件夹 属性读入内存包括:

读取 BIOS参数块的内容, 获取主文件表的起始地址和大小; 确定主文件表中所有文件或文件夹属性所在记 录项的记录起止地 址; 根据确定的所有文件或文件夹属性所在记录项 的记录起止地址将主 文件表中所有文件或文件夹属性读入内存。

优选地, 所述从主文件表中获取所有文件或文件夹属性 的记录地址, 并根据文件或文件夹属性的记录地址将主文件 表中的所有文件或文件夹 属性读入内存包括:

打开元文件 $MFT 来获取整个主文件表的所有文件或文件夹属性 所 在记录项的记录地址, 并根据所述文件或文件夹属性所在记录项的记 录 地址获取所述文件或文件夹属性。

优选地, 所述获取硬盘分区格式包括:

读取主引导记录区的内容, 从所述主引导记录的内容中获取硬盘分 区格式。

优选地, 所述在读入内存的所有文件或文件夹属性中遍 历查找全部 或部分文件或文件夹包括:

确定文件分配表或主文件表的起始地址;

从起始地址开始, 依次偏移文件或文件夹属性所在记录项所占用 的 字节数, 直至遍历完成。

优选地, 所述在读入内存的所有文件或文件夹属性中遍 历查找全部 或部分文件或文件夹包括:

确定主文件表中文件或文件夹属性在其所在记 录项中的存储位置, 在所述存储位置进行查找。

优选地, 所述在读入内存的所有文件或文件夹属性中遍 历查找全部 或部分文件或文件夹包括:

根据在查找时加入的文件或文件夹特征作为查 找条件, 在读入内存 的所有文件或文件夹属性中遍历查找全部或部 分文件或文件夹。

优选地, 所述查找条件包括以下一种或多种: 文件名、 文件夹名、 创建日期、 最后访问日期和大小。

优选地, 所述指定文件或文件夹的查找包括以下一种或 几种: 重复文件或文件夹查找、 0字节文件或文件夹查找、 指定文件或文件 夹查找, 以及垃圾文件查找。

优选地, 所述方法还包括删除所述查找到的文件或文件 夹。

优选地, 所述方法还包括:

若出现新的硬盘分区格式, 从服务器中获取文件或文件夹属性的记 录地址。

优选地, 所述硬盘中所有文件或文件夹属性包括以下一 种或多种: 名称、 大小、 创建时间、 创建日期、 最后访问日期、 最后修改日期。 优选地, 所述方法还包括:

根据硬盘分区格式获取硬盘中所有文件或文件 夹的存放位置。

优选地, 所述将所有文件或文件夹属性读入内存包括:

将所有文件或文件夹属性一次读入内存; 或

将所有文件或文件夹属性分段读入内存。

为了解决上述问题, 本发明还公开了一种文件或文件夹查找装置, 包括:

硬盘分区格式获取模块, 配置为获取硬盘分区格式;

记录获取模块, 配置为根据硬盘分区格式获取硬盘中所有文件 或文 件夹属性的记录地址; 并根据所述文件或文件夹属性的记录地址将所 有 文件或文件夹属性读入内存;

查找模块, 配置为在读入内存的所有文件或文件夹属性中 遍历查找 全部或部分文件或文件夹。

优选地, 所述记录获取模块包括:

文件分配表记录获取模块, 配置为当硬盘分区格式为 FAT12, FAT16 或 FAT32时, 从文件分配表获取所有文件或文件夹属性的记 录地址, 并 根据文件或文件夹属性的记录地址将文件分配 表中的所有文件或文件夹 属性读入内存; 和 /或

主文件表记录获取模块, 配置为当硬盘分区格式为 NTFS时,从主文 件表中获取所有文件或文件夹属性的记录地址 和属性, 并根据文件或文 件夹属性的记录地址将主文件表中的所有文件 或文件夹属性读入内存。 优选地, 所述文件分配表记录获取模块包括:

文件分配表起始地址和大小获取模块,配置为 读取 BIOS参数块的内 容, 获取文件分配表的起始地址和大小;

记录地址确定模块, 配置为确定文件分配表中所有文件或文件夹属 性所在记录项的记录起止地址;

记录内容读取模块, 配置为根据确定的所有文件或文件夹属性所在 记录项的记录起止地址将文件分配表中所有文 件或文件夹属性读入内 存。

优选地, 所述主文件表记录获取模块包括:

主文件表起始地址和大小获取模块, 配置为读取 BIOS 参数块的内 容, 获取主文件表的起始地址和大小;

记录地址确定模块, 配置为确定主文件表所有文件或文件夹属性所 在记录项的记录起止地址;

记录内容读取模块, 配置为根据确定的所有文件或文件夹属性所在 记录项的记录起止地址将主文件表中所有文件 或文件夹属性读入内存。

优选地, 所述主文件表记录获取模块包括:

元文件打开模块,配置为打开元文件 $MFT来获取整个主文件表的所 有文件或文件夹属性的记录地址, 并根据所述文件或文件夹属性的记录 地址获取所述文件或文件夹属性。

优选地, 所述硬盘分区格式获取模块包括:

主引导记录区内容读取模块, 配置为读取主引导记录区的内容, 从 所述主引导记录的内容中获取硬盘分区格式。

优选地, 所述查找模块包括:

属性信息区域确定模块, 配置为确定主文件表中文件或文件夹属性 在其所在记录项中的存储位置, 对所述存储位置进行查找。

优选地, 所述装置还包括:

查找条件添加模块, 配置为根据在查找时加入的文件或文件夹特征 作为查找条件, 在读入内存的所有文件或文件夹属性中遍历查 找全部或 部分文件或文件夹; 和

展示模块, 配置为展示查找到的文件或文件夹。

优选地, 所述装置还包括:

处理模块, 配置为删除查找到的文件或文件夹。

优选地, 所述装置还包括:

文件或文件夹属性记录地址获取模块, 配置为在出现新的硬盘分区 格式, 从服务器中获取文件或文件夹属性的记录地址 。

优选地, 所述记录获取模块包括:

一次读取模块, 配置为将所有文件或文件夹属性一次读入内存 ; 或 分段读取模块, 配置为将所有文件或文件夹属性分段读入内存 。 本发明还提供了一种在其上记录有用于执行上 述文件或文件夹查找 方法的程序的计算机可读记录介质。

与现有技术相比, 本发明具有以下优点:

本发明的文件或文件夹查找方法和装置通过读 取硬盘的主引导记录 区中所记载的文件或文件夹属性的记录起始地 址, 并根据硬盘分区类型 来确定每个文件或文件夹属性记录所在记录项 的偏移量, 从而获取每个 文件或文件夹属性的记录起止地址, 并可以根据文件或文件夹属性的记 录起止地址将所有文件或文件夹属性从硬盘一 次或分段读入到内存中, 然后在内存中遍历所有的文件或文件夹属性来 对文件或文件夹进行查 找。 此种方式通过一次或几次 I/O操作来实现文件或文件夹查找, 可以避 免因为频繁进行 I/O操作而造成的查找速度较慢的情况,提高查 找速度以 及客户端的响应速度, 避免对客户端资源进行不必要的占用。 附图说明

图 1是本发明的文件或文件夹查找方法实施例一 流程图;

图 2是图 1所示的根据硬盘分区格式获取所有文件或文 夹记录方法 实施例的流程图;

图 3是本发明的文件或文件夹查找装置实施例一 结构示意图; 图 4是本发明的记录获取模块实施例一的结构示 图;

图 5是本发明的记录获取模块实施例二的结构示 图;

图 6是本发明的文件或文件夹查找装置实施例二 结构示意图。 具体实施方式

为使本发明实施例的上述目的、 特征和优点能够更加明显易懂, 下面结 合附图和具体实施方式对本发明作进一步详细 的说明。

本发明的文件或文件夹查找方法及装置应用于 计算机客户端, 用于对 客户端的硬盘中存储的文件或文件夹进行查找 。 具体的, 本发明的文件或 文件夹查找方法及装置可以通过计算机程序实 现, 并安装于客户端中, 通 过处理器的运行来执行。

参照图 1 , 示出本发明的文件或文件夹查找方法的实施例 一, 包括以 下步骤:

步骤 101 , 获取硬盘分区格式。

硬盘分区格式可以通过实时读取主引导记录区 的内容来获取; 或者 在用户根据物理硬盘容量和自己的需要, 建立主分区、 扩展分区和逻辑 盘符并格式化处硬盘后, 将硬盘的分区格式信息预先存储在硬盘或者内 存中的非主引导记录区的地址 /地址段处, 并以供指定接口函数访问该地 址 /地址段, 来获取硬盘分区格式信息。 硬盘分区格式还可以釆用其他第 三方应用软件来识别获取, 当需要时从第三方应用软件提供的接口函数 获取。 可以理解的是, 硬盘分区格式还可以根据其他方式来获取, 本发 明对此并不限制。

其中, 读取主引导记录区的内容具体包括以下步骤: 操作系统可以 调用 API CreateFile来打开相应的硬盘设备或分区。 从而得到硬盘或分区 的句柄, 进而读取到主引导记录区 (MBR, Master Boot Record )的内容。

读取主引导记录区的内容判断硬盘分区格式, 在主引导记录区中记 载有硬盘分区格式的标识, 通过读取主引导记录区的内容便可以确定硬 盘分区格式。 目前 Windows 的分区格式包括有 FAT12, FAT16, FAT32 和 NTFS ( New Technology File System )。 其中对于前 3种分区, 硬盘上 的所有文件、文件夹信息都记录于文件分配表 ( FAT, File Allocation Table ) 里。 对于 NTFS 分区, 所有文件、 文件夹信息存储在主文件表(MFT, Master File Table ) 里。

步骤 102,根据硬盘分区格式获取硬盘中所有文件或 件夹属性的记 录地址, 并根据所述文件或文件夹属性的记录地址将所 有文件或文件夹 属性读入内存。

其中, 文件或文件夹属性是指名称、 大小、 创建时间、 创建日期、 最后访问日期、 最后修改日期等等能对文件或文件夹进行识别 的特征。

所有文件或文件夹属性记录在文件分配表或主 文件表中, 其中, 其 记录的载体与硬盘分区格式对应。 分区格式为 FAT12, FAT 16 或 FAT32 对应的所有文件或文件夹属性记录在文件分配 表中, 分区格式为 NTFS 对应的文件或文件夹属性记录在主文件表中。

如果硬盘的分区格式为 FAT12, FAT 16或 FAT32的其中一种, 那么 读取文件分配表的内容。 如果硬盘的分区格式为 NTFS, 那么则读取主文 件表的内容。

将所有文件或文件夹属性读入内存可以是一次 读入内存, 也可以是 分段读入内存, 即分几次读入, 具体的可以根据内存的容量和占用情况 来确定。 例如, 当内存足够大的时候, 可以选择将所有文件或文件夹属 性一次读入内存, 当内存不足时, 则可以分几次将所有文件或文件夹属 性读入内存, 从而避免频繁的输入 /输出操作以及占用过多的系统资源。

参照图 2, 其中, 读取文件分配表的内容的具体过程为:

D1 , 读取 BPB(BIOS参数块, BIOS Parameter Block)的内容, 获取文 件分配表的起始地址和大小。

其中, BPB记录在主引导记录区中, BPB会按照固定的格式来记录 文件分配表的起始地址, 从主引导记录区可以读取到 BPB的内容, 通过 对 BPB内容的分析可以找到 BPB对应的记录字节,便可以获取文件分配 表的起始地址。 另外, BPB 中定义了每扇区字节数、 每个簇有几个扇区以及总扇区 数。 通过这些文件或文件夹可以计算出每簇的大小 =每扇区字节数 *每个 簇的扇区数。 BPB 中记载了文件分配表所占用的起始簇号及簇的 占用数 量, 从而可以获取文件分配表的大小。

D2 , 确定文件分配表中所有文件或文件夹属性所在 记录项的记录起 止地址。

一般来说, 文件分配表中每一个记录项之间的偏移量是一 定的, 文 件或文件夹属性在每一个记录项中的存储位置 也是一定的, 在确定文件 分配表的起始地址后, 可以通过偏移量来获取到每个文件或文件夹属 性 所在记录项的起止地址, 从而确定每个文件或文件夹属性的记录地址。 例如, 文件分配表中的一个记录项的偏移量为 1024个字节, 文件或文件 夹属性占用前 512 个字节, 那么在确定文件分配表中每个记录项的起止 地址后, 便可以确定文件或文件夹属性的记录地址。

通过文件分配表的起始地址、 偏移量和大小可以确定文件分配表的 终止地址, 具体的, 通过起始地址和大小, 可以计算出文件分配表的终 止地址, 在通过偏移量来获取起始地址和终止地址之间 的所有文件或文 件夹属性所在记录项的记录起止地址, 从而可以保证文件分配表的所有 文件或文件夹属性所在记录项的记录起止地址 都能被确定。

D3 , 根据确定的所有文件或文件夹属性所在记录项 的记录起止地址 将文件分配表中所有文件或文件夹属性读入内 存。

在确定文件分配表中所有文件或文件夹属性所 在记录项的记录起止 地址之后, 便可以将整个文件分配表一次性或分段读入内 存, 包括所有 文件或文件夹属性, 也即进行一次或几次 I/O操作。

读取主文件表的内容的其中一种方式与前述的 读取文件分配表的内 容的方式相同, 即通过 BPB获取主文件表的起始地址和大小, 然后根据 主文件表的偏移量确定主文件表中所有文件或 文件夹属性所在记录项的 记录起止地址, 将整个主文件表所有文件或文件夹属性一次或 分段读入 内存。 因为 NTFS 分区的特殊性, 读取主文件表的内容还可以直接通过 CreateFile函数打开元文件$^«^来获取整个主文件 表的所有文件或文件 夹属性所在记录项的记录地址, 并根据文件或文件夹属性所在记录项的 记录地址来获取文件或文件夹属性, 然后将所有文件或文件夹属性一次 或分段读入内存中。

进一步地, 还可以获取文件或文件夹在硬盘中的存放位置 , 从而便 步骤 103 ,在读入内存的所有文件或文件夹属性中遍历 找全部或部 分文件或文件夹。

其中, 文件分配表或主文件表里一个记录项对应一个 文件或文件夹, 通过遍历所有记录项中的文件或文件夹属性将 整个分区上的所有文件及 文件夹列出, 从而可以实现快速查找全部或部分文件或文件 夹。

对于文件分配表来说, 每个记录项占用 32个字节, 其中, 前 10个 字节是文件名 (Dos文件名规则, 即短文件名), 接下来有 1个字节记录 文件属性, 1个字节是保留的, 然后依次是创建时间, 创建日期, 最后访 问曰期, 总共占用了几个簇, 最后修改日期, 第一个簇的地址, 文件大 小。 因为每个数据所占用的字节数较少, 因此直接通过遍历整个数据来 获取相关的信息。 具体的, 从第一个数据的记录起始地址开始, 每次偏 移数据占用的字节数, 即 32个字节, 就能遍历所有文件或文件夹信息, 以获取文件或文件夹的属性信息。

对于主文件表来说, 每个记录项占用 1024个字节, 文件或文件夹属 性占用前 512 个字节, 在确定文件或文件夹所在记录项的记录起始地 址 后, 往后读取 512 个字节, 便可以获取到文件或文件夹的属性信息。 因 此, 在查找时, 还可以先确定文件或文件夹属性的存储位置, 然后再在 查找到的存储位置来读取相关属性, 无需遍历整个记录项, 从而可以节 省查找时间。 具体的, 主文件表中, 每个文件或文件夹所有属性信息都 记录在该其所在记录项第一个 "FILE0" 开头的区域往后 512个字节中, 通过找到第一个 "FILE0" 开头的区域, 然后往后读取 512个字节也可以 获取到属性信息。

另外, 因为文件分配表或主文件表记录了文件或文件 夹的详细信息, 因此在查找时, 可以加入文件或文件夹特征作为查找条件, 在读入内存 的所有文件或文件夹属性中遍历查找全部或部 分文件或文件夹, 从而提 高查找速度。 另外, 还可以根据需要展示查找到的文件或文件夹。 其中, 查找条件可以包括文件名, 创建日期, 最后访问日期, 大小等等。 通过 添加查找条件可以使本发明的文件或文件夹查 找方法应用于多种场景的 文件查找, 如重复文件或文件夹查找、 0字节文件或文件夹查找、 指定文件 或文件夹查找, 以及垃圾文件查找等等。

进一步地, 还可以根据需要删除查找到的文件或文件夹。 例如删除 重复文件或文件夹、 垃圾文件、 0字节文件或文件夹等等。

进一步地, 当出现新的硬盘分区格式时, 可以从服务器中获取该分区格 式下文件或文件夹属性的记录地址,从而根据 文件或文件夹属性的记录地址 将文件或文件夹属性读入内存中。

下面, 以 windows操作系统为例对前述的文件或文件夹查 方法进 行说明, 假设硬盘的分区釆用 NTFS格式, 需要在 C盘进行文件查找, 那么具体过程如下所述:

使用 Windows API CreateFile来打开目标驱动器,读取前 512个字节, 即引导记录区, 从第 25字节开始是 BPB文件, MFT的起始地址可以从 BPB中读取, 具体是 BPB中的第 49 - 57字节。 其中 BPB中的头两个字 节定义了每扇区字节数, 接下来的 2 个字节定义了每个簇有几个扇区, 第 41 字节到 49字节是此分区总共有多少扇区。 以上文件或文件夹可以 计算出每簇的大小 =每扇区字节数 *每个簇的扇区数, 每簇的大小通常是 4KB, 但在格式化时也可以指定为其它大小。 取得 MFT地址后再次调用 ReadFile来读取整个 MFT。 MFT的每个记录段长度为 1024个字节。

开始遍历 MFT来找到所有文件和文件夹。 具体方法是: 找到第一个 "FILE0" 开头的区域, 往后读取 512个字节, 所有与这个文件或文件夹 相关的属性全部在这 512个字节里, 包括文件名, 是否目录, 文件大小, 文件所占用的起始簇号, 占了多少个簇, 创建日期, 访问日期等等。 此 处, 只读前 512字节而不是 1024字节, 是因为后面 512节点是数据段, 一些小于 512字节的文件会被直接存在 MFT里, 对查找文件而言, 读取 前 512字节就可以实现查找。 然后往后偏移 1024字节读取下一个文件内 容, 以此类推, 直至所有文件信息读取完, 即可完成查找。

参照图 3 , 示出本发明的一种文件或文件夹查找装置实施 例, 包括: 硬 盘分区格式获取模块 12、 记录获取模块 20和查找模块 30。

硬盘分区格式获取模块 12, 配置为获取硬盘分区格式。 其中, 硬盘 分区格式通常为 FAT12, FAT16 , FAT32和 NTFS。 优选地, 硬盘分区格 式获取模块 12包括主引导记录区内容读取模块 10,配置为读取主引导记 录区的内容, 从所述主引导记录的内容中获取硬盘分区格式 。 硬盘分区 格式也可以在用户根据物理硬盘容量和自己的 需要, 建立主分区、 扩展 分区和逻辑盘符并格式化处硬盘后, 将硬盘的分区格式信息预先存储在 硬盘或者内存中的非主引导记录区的地址 /地址段处, 并以供指定接口函 数访问该地址 /地址段, 来获取硬盘分区格式信息。 硬盘分区格式还可以 釆用其他第三方应用软件来识别获取, 当需要时从第三方应用软件提供 的接口函数获取。 可以理解的是, 硬盘分区格式还可以根据其他方式来 获取, 本发明对此并不限制。

记录获取模块 20, 配置为根据硬盘分区格式获取所有文件或文件 夹 属性的记录地址, 并根据所述文件或文件夹属性的记录地址将所 有文件 或文件夹属性读入内存。其中,当硬盘分区格 式为 FAT12, FAT16或 FAT32 时, 记录获取模块 20为文件分配表记录获取模块, 配置为从文件分配表 获取所有文件或文件夹属性的记录地址。 当硬盘格式分区为 NTFS时,记 录获取模块 20为主文件表记录获取模块, 配置为当从主文件表中获取所 有文件或文件夹属性的记录地址。

查找模块 30 , 配置为在读入内存的所有文件或文件夹属性中 遍历查 找全部或部分文件或文件夹。

参照图 4, 示出本发明的记录获取模块实施例一的结构示 意图。 其中, 文件分配表记录获取模块包括文件分配表起始 地址和大小获取模块 211、 记录地址确定模块 213和记录内容读取模块 215。 其中, 文件分配表起始 地址和大小获取模块 211 , 配置为读取 BPB的内容, 获取文件分配表的 起始地址和大小。 记录地址确定模块 213 , 配置为确定文件分配表中所有 文件或文件夹的记录起止地址。 记录内容读取模块 215 , 配置为根据确定 的所有文件或文件夹属性所在记录项的记录起 止地址将文件分配表中所 有文件或文件夹属性读入内存。

参照图 5 , 示出本发明的记录获取模块实施例二的结构示 意图。 其中, 主文件表记录获取模块包括主文件表起始地址 和大小获取模块 231、记录 地址确定模块 233和记录内容读取模块 235。 其中, 主文件表起始地址和 大小获取模块 231 , 配置为读取 BPB的内容, 获取主文件表的起始地址 和大小。 记录地址确定模块 233 , 配置为确定主文件表所有文件或文件夹 的记录起止地址。 记录内容读取模块 235 , 配置为根据确定的所有文件或 文件夹属性所在记录项的记录起止地址将主文 件表中所有文件或文件夹 属性读入内存。

另外, 主文件表记录获取模块也可以包括元文件打开 模块 237, 配置 为打开元文件 $MFT 来获取整个主文件表的所有文件或文件夹属性 的记 录地址, 并根据所述文件或文件夹属性的记录地址获取 所述文件或文件 夹属性。 具体的, 可以通过 CreateFile函数打开元文件$^«^。

参照图 6, 图 6是本发明的文件或文件夹查找装置实施例二 结构示意 图。 进一步地, 查找模块 30包括文件或文件夹属性遍历模块 31和 /或属 性信息区域确定模块 33。 其中, 文件或文件夹属性遍历模块配置为遍历 每一个文件或文件夹属性, 获取文件或文件夹属性。 属性信息区域确定 模块, 配置为确定主文件表中文件或文件夹属性的存 储位置,对所述存储位 置进行查找。

进一步地,文件或文件夹查找装置还包括查找 条件添加模块 50和展示 模块 70。 查找条件添加模块 50, 配置为在查找时加入的文件或文件夹特征 作为查找条件。 例如, 文件名, 创建日期, 最后访问日期, 大小等等的查 找条件。 展示模块, 配置为展示查找到的文件或文件夹。

进一步地, 文件或文件夹查找装置还包括处理模块 80, 配置为删除 查找到的文件或文件夹。

进一步地, 文件或文件夹查找装置还包括文件或文件夹属 性记录地址 获取模块 90, 配置为在出现新的硬盘分区格式,从服务器中 获取文件或文件 夹属性的记录地址。

进一步地, 所述记录获取模块 20还包括一次读取模块 25 , 配置为将 所有文件或文件夹属一次读入内存; 或分段读取模块 27, 配置为将所有 文件或文件夹属性分段读入内存。

基于以上内容, 本发明还提供了一种在其上记录有用于执行上 述文件 或文件夹查找方法的程序的计算机可读记录介 质。 其中, 所述文件或文件 夹查找方法的具体内容可参见方法实施例所述 的内容, 在此不作赘述。

所述计算机可读记录介质包括用于以计算机( 例如计算机)可读的形式 存储或传送信息的任何机制。 例如, 机器可读介质包括只读存储器(ROM )、 随机存取存储器( RAM )、 磁盘存储介质、 光存储介质、 闪速存储介质、 电、 光、 声或其他形式的传播信号 (例如, 载波、 红外信号、 数字信号等)等。

本发明的文件或文件夹查找方法和装置通过读 取主引导记录区中所 记载的文件或文件夹记录的起始地址和大小来 确定每个文件或文件夹记 录的地址, 从而将所有文件或文件夹记录一次或分段读入 到内存中, 然 后在内存中遍历所有的文件或文件夹记录来对 文件进行查找。 此种方式 通过一次或几次 I/O操作来实现文件查找, 可以避免因为频繁进行 I/O操 作而造成的查找速度较慢的情况, 提高查找速度以及客户端的响应速度, 避免对客户端资源进行不必要的占用。 说明的都是与其他实施例的不同之处, 各个实施例之间相同相似的部分 互相参见即可。 对于装置实施例而言, 由于其与方法实施例基本相似, 所以描述的比较简单, 相关之处参见方法实施例的部分说明即可。

以上对本发明所提供的文件或文件夹查找方法 和装置进行了详细介 以 上实施例的说明只是用于帮助理解本发明的方 法及其核心思想之一; 同 时, 对于本领域的一般技术人员, 依据本发明的思想, 在具体实施方式 及应用范围上均会有改变之处, 综上所述, 本说明书内容不应理解为对 本发明的限制。