·最近在Windows平台下做一款类似Everything的文件极速搜索软件,要求以最快的速度搜索名称中包含关键字的文件,对NTFS可以利用Everyting的原理,读取NTFS秘书USN日志,再做一些存储索引的处理,速度还可以;Fat32文件系统只能遍历磁盘,一个一个文件做字符串匹配,速度比较慢。所幸,现在绝大多数的文件系统都是NTFS了,对FAT的快速搜索不做也可。
深入了了解了Fat32和NTFS这两种文件系统的特性,以及Windows相关API的使用注意事项,特此总结一下:
文件系统是磁盘内组织文件的一种格式,这样操作系统可以方便的读取/修改/删除文件。这里我只介绍windows下使用最多的Fat32和Ntfs文件系统
FAT(文件分配表):将一个分区内的数据零散的分为固定大小的簇,每个簇大小一般为2kb-32kb,这样数据文件可以放在至少一个或多个簇上,文件经常是被分散在整个数据区域的各个地方,通过每一个簇内保存下一个簇的地址来构成一个单链表,以维持整个数据文件的存取。注意:这里的簇是OS的一个逻辑概念,它在物理上一般是由多个连续的磁盘扇区组成。文件分配表中记录了文件的起始簇地址和簇的信息。Windows98及以前必须在FAT下安装。
FAT32:是FAT中的一种,它采用32位的文件分配表,每个簇大小因分区大小而不同,一般为4-32kb,每个文件大小最大为4GB,每个分区大小最大为32GB。显然,其大小局限性及簇的利用率导致了很多限制,加上NT操作系统的发展,该文件系统几乎被NTFS所全面取代。
深入了了解了Fat32和NTFS这两种文件系统的特性,以及Windows相关API的使用注意事项,特此总结一下:
文件系统是磁盘内组织文件的一种格式,这样操作系统可以方便的读取/修改/删除文件。这里我只介绍windows下使用最多的Fat32和Ntfs文件系统
FAT(文件分配表):将一个分区内的数据零散的分为固定大小的簇,每个簇大小一般为2kb-32kb,这样数据文件可以放在至少一个或多个簇上,文件经常是被分散在整个数据区域的各个地方,通过每一个簇内保存下一个簇的地址来构成一个单链表,以维持整个数据文件的存取。注意:这里的簇是OS的一个逻辑概念,它在物理上一般是由多个连续的磁盘扇区组成。文件分配表中记录了文件的起始簇地址和簇的信息。Windows98及以前必须在FAT下安装。
FAT32:是FAT中的一种,它采用32位的文件分配表,每个簇大小因分区大小而不同,一般为4-32kb,每个文件大小最大为4GB,每个分区大小最大为32GB。显然,其大小局限性及簇的利用率导致了很多限制,加上NT操作系统的发展,该文件系统几乎被NTFS所全面取代。
NTFS:WindowsNT后的标准文件系统。簇为4kb,文件最大32GB,分区最大2TB。而且更安全,可恢复,可加密。文件夹按照B-Tree结构设计,提取速度更快。文件及文件夹权限可随意订制。现在的Windows操作系统一般都用NTFS文件系统,如下图: