那么怎么来测试这样一个问题呢,很显然我们一个个的去建立文件是不现实的,没那么多时间,而且这个方法也太笨了。这里我们会用到批处理命令,新建一个bat文件,然后将“for /l %%a in (1,1,10000000000000000) do echo text> %%a.txt”这段代码复制进去,保存后退出。这段代码的意思是在文件夹下面从1.txt开始建立10000000000000000个文件。
在FAT32文件格式的硬盘中双击这个批处理文件后,再耐性等待一会儿,我们发现在建立到第65535个文件时,出现“无法创建目录或文件”的提示了,这说明在FAT32文件格式下一个文件夹下面最多能放65535个文件。
那么在NTFS文件格式的硬盘中能一个文件夹能存放多少文件呢,我们同样也可以用上面这个批处理来进行测试,不过还是先告诉大家答案吧,在NTFS文件格式下一个文件家下面可以存放4294967295个文件,你至少需要有16.7TB的空余磁盘才能完成这个测试,所以大家其实不必纠结一个文件夹下面最多可以放多少文件,在Windows的机制下面,这些数值是完全够你使用的。
FAT 分区
4GB Max File Size (文件最大)
4GB Max Volume Size
一个文件夹最多512个文件
FAT32 分区
4GB Max File Size
2TB Max Volume Size
一个文件夹最多65,534个文件
NTFS 分区
No limit on Max file size.
256TB Max Volume Size (64KB Clusters)
一个文件夹最多 4,294,967,295个文件
通过上面的简单介绍相信会给很多网友解决这个一个文件夹下面最多可以放多少文件的问题了(如果是ntfs格式的什么都不用怕了),有兴趣的网友可以顺便其他一些读写文件的知识了,例如磁盘被写保护怎么去掉等等。
问:windows的服务器,一个文件夹最多能放多少个文件而不会影响php/nodejs/java等读取文件的速度?
答:读取文件的方式是知道文件名,直接读取的,不用遍历文件夹。
这样大家做网站考虑目录优化的朋友有福了,可以/html/1.htm 无限制的更新内容了,不过前提是你的硬盘分区时ntfs格式的。
补充
1.windows下最大文件数量与正在使用的文件系统有关,一般2000系统以上都支持ntfs格式的。
2.读取效率的话,操作系统将目录文件都是索引存放的,与mysql主键查找同个道理,影响不是太大,但肯定是数据越多,速度越慢。
3.linux我用的是centos系统,其他我不知道,文件系统管理受两个限制,磁盘空间和inode容量。就是说linux下文件的元信息(文件名,作者,创建时间)存放在inode里,有次我遇到过磁盘空间占用12%,但出现磁盘拒绝访问的情况,查了结果是没定期清理tmp目录导致小文件过多,导致inode下容量耗完。而inode的容量可以在分区的时候手动设定.
小编补充:
一般来说为了优化不建议将所有文件放一个目录里面,下面是几点建议
1、与其都放html不如多分几个目录例如asp,php,jsp,network,linux等多建几个目录也利于优化
2、找一个自己熟悉的服务器系统,万一服务器被黑也好快点处理,不要有问题再找别人帮忙解决了,linux也会被黑,2008r2也是不错的,搭配mcafee、服务器安全狗、护卫神等安全工具,推荐mcafee+护卫神结合。