Board logo

标题: 发现fat32格式的严重局限性 [打印本页]

作者: baby15500     时间: 2005-12-29 00:50    标题: 发现fat32格式的严重局限性

应该不能说是缺陷,当初设计的时候没考虑好,如果你使用的是FAT32,那么你将无法在一个子目录中存放超过一万个的文件数量,google搜索一下fat32 over 10000 files你可能会发现国外也有人讨论这类的问题,根据我自己测试,发现这个数据好像并不是固定的,有些目录可以存放七千多个文件,有些则只能存放六千多,就再也拷贝不进去了,无法你用msdos命令还是用工具软件,都无法把文件复制进去,根本达不到一万,把硬盘换成ntfs,问题得到解决,当然估计这个ntfs也是有上限的,具体数目现在还不知道,fat32每个目录不到一万的文件数量支持明显已经不能满足某些收集狂用户的需要
作者: Wengier     时间: 2005-12-29 03:50
“严重局限性”这样说似乎太危言耸听了点吧。其实从理论上来说,FAT32分区中一个子目录中的文件数量的最大上限应该是65535,即六万多。然而,这是在没有长文件名的情况下,而由于长文件名也是会占用目录项的(长文件名是利用目录中的特殊属性位来存储的),所以,如果目录里面的长文件名越多、越长,那么该子目录中的文件数量实际上限就会越少。

不过,一般用户都不会在同一个子目录中放那么多文件吧?一般子目录中的文件就算比较多的时候也就几百,偶尔一两千,更不用说几千几万了,所以通常这种问题并不会出现。即使是收集狂,也没有必要或不应该把所有收集来的文件都全部放在一起而不进行归类吧?只要稍微归类一下,例如放在下一层子目录中, 既方便查找,又能更有效使用空间。
作者: baby15500     时间: 2005-12-29 05:40
fat32目录结构设计得太保守了呀,以前不知道,这几天发现了,我下载了一套commodore amiga电脑主机的经典游戏全集,容量几十gb,里面是有按游戏类型分目录,但是每个目录文件数量都达到接近一万或者超过一万,而且都是50个英文字母以上的长文件名字描述,造成下载一半后无法继续,那个BT种子的提供者也没有事先说明必须使用nfts,我还以为是磁盘坏了,扫描没有发现问题,使用msdos命令无法复制文件,删除里面的部分文件后,可以复制进去,但是到达一定数量的时候又不行了,到BT论坛上去求助,得知是FAT32已经不行了,要换ntfs,搞成ntfs后果然解决了,晕死..看来微软也是做一天和尚撞一天钟,没有长远考虑,快不行了才会出一个新的解决方案,总算明白了MS为什么不再主动推荐用户采用FAT32的磁盘格式了,不知道这个ntfs又能撑到什么时候
附件 1: 未命名.JPG (2005-12-29 05:40, 3.96 K, 下载附件所需积分 1点 ,下载次数: 5)



作者: 220110     时间: 2005-12-29 09:08
呵呵,你站得太高了,太远见了。
自然界总会有不足并接近极限以致矛盾产生时,然后才又进化的。
一种技术辉煌一个时代已足够矣。

我用批处理在FAT32下创建2万多个子目录,并没什么问题。
文件夹名用 FOR产生的序列数来命名的;看来应该像wengier 说,理论上可以达到6万多个简单文件名的文件夹的,只是长文件名等因素影响着而已。

[ Last edited by 220110 on 2005-12-29 at 09:11 ]
附件 1: 目录数.png (2005-12-29 09:08, 8.71 K, 下载附件所需积分 1点 ,下载次数: 3)



作者: 220110     时间: 2005-12-29 09:13
删除这3万个文件夹用了我5分钟时间,唉. ..
作者: baby15500     时间: 2005-12-29 09:58
但是现在很少采用8.3格式命名,比较正常的游戏描述就需要几十个字母的长度,比如我图中的这种游戏描述,一个目录放不到七千个文件,而收集一台不完全的主机游戏或者软件,仅仅是一部分就已经达到了一万多文件,除非你手动建立目录按A,B,C这样描述首字母进行分级存放,这显然非常不方便,现在我搞成ntfs解决了,只是不知道上限又是多少,就象是一个定时炸弹一样,晕
附件 1: 未命名.JPG (2005-12-29 09:58, 83.83 K, 下载附件所需积分 1点 ,下载次数: 2)



作者: Wengier     时间: 2005-12-29 11:44
倒不是说只能按照A、B、C这样描述首字母而且专为避免此问题的笨办法来进行分级存放,而是可以采取更好也更实用的存放办法。以上面的那些文件为例,可以在游戏下载目录中分别建立"1st Division Manager .."、"3D Construction Kit .."等目录,然后把各游戏相关的文件放在相应的游戏目录中。必要的话还可以按照游戏类型分类,将相同类型的游戏的目录放在同一个父目录中。这样既方便查找和运行,也可以明显加快读取速度,而不是将所有内容全部放在一起,没有任何层次。而且这样整理归类应该可以算是一种好习惯吧,就像房间中有许多不同的抽屉存放不同的东西一样。我自己平常下载的文件都是这样分类存放的,并不是刻意避免目录中的文件数量限制(我之前这样分类存放从来不是因为这个原因),而已是一种整理文件的习惯了。整理其它文件也类似,如果全摊在一起多不好,操作起来也不太方便。
作者: baby15500     时间: 2005-12-29 12:04
汗,這個收集有點象MAME街機的ROM,一般是所有遊戲全部放在同一目錄中,MAME的遊戲標準是8.3命名格式,不然現在也快危險了,這個硬盤我現在還是選擇NTFS算了,雖然WIN98不能訪問,但是平時玩模擬器還是在用WINXP
作者: fujianabc     时间: 2005-12-29 17:26
顺便问一下,是否fat32/fat16的目录层数也有限制,记得以前装过某个软件放在program files内装到一半就装不下去了,而一定要放在根目录下才能完成安装。那个软件的目录层次超多,而且有些目录的文件名特长。
作者: darkradx     时间: 2005-12-29 19:46
有限制
可以用SUBST突破某一方面的限制, 然後系統訪問的時候會挂掉
作者: yao741     时间: 2006-1-1 22:43
读一读长知识,感谢分享。
作者: bush     时间: 2006-1-1 23:01    标题: 待會兒我也去實踐一下~


作者: reely     时间: 2006-1-6 13:56
受教了
作者: electronixtar     时间: 2006-1-7 13:37
强~~~能bt那么多文件来玩~~
作者: loveqiqi     时间: 2006-1-30 15:15
FAT32好象还不支持大于4G的文件
作者: JonePeng     时间: 2006-1-30 22:51


  Quote:
Originally posted by loveqiqi at 2006-1-30 15:15:
FAT32好象还不支持大于4G的文件

没那么大,只支持到2G而已。
作者: Wengier     时间: 2006-1-31 11:50


  Quote:
Originally posted by JonePeng at 2006-1-30 10:51 PM:

没那么大,只支持到2G而已。

应该是4GB。2GB则是FAT16的文件大小限制(也是它的分区大小限制)。
作者: JonePeng     时间: 2006-1-31 18:41
呵呵,FAT的限制我经常混淆。
作者: 9616061     时间: 2006-3-4 16:51
原来还有这回事啊!
作者: kcdsw     时间: 2006-4-14 16:21
我彻底晕死  ntfs没有限制的
而fat格式受文件分配表大小的限制,(而长文件名的文件必须含有1个短文件名,每个长文件名占有的分配表大小不等)所以才有了文件量的限制

fat12/16/32
大家可以试试  往软盘的根目录拷数据,看能拷多少?  因为它使用了fat12格式,而它的文件分配表是不可以扩充的,所以它所能包含的文件树木肯定是有限个数的
作者: xuantian     时间: 2006-4-14 18:32
支持长文件名并不是叫你乱用长文件名,看看6楼的贴图,这样命名文件或者目录,纯属没事找事
作者: xuantian     时间: 2006-4-14 18:34
搞的文件名和目录名比文件还长,瞎闹