问题现象:我们的软件运行在Windows server 2003系统上,软件是一个接受文件软件,将接受的文件存于一个文件夹下,当运行到一定的时候,大概文件夹下有10w个文件的时候,就弹出“无法创建目录或文件”对话框,这是是我们catch到的异常。
问题原因:
可能有两种:
一、我们是不是使用了Windows server 的磁盘限额功能,限制了每个用户的所能使用磁盘的大小。在一个有很多用户的系统上,系统必须限制每个用户的磁盘使用空间,以免个别用户占用过多的磁盘空间影响系运行和其他用户的使用。限制用户的磁盘使用空间就是给用户分配磁盘限额(quota),用户只能使用额定的磁盘使用空间,超过之后就不能再存储文件。
磁盘限额是系统管理员用来监控和限制用户或组对磁盘的使用的工具。磁盘限额可以从两方面限制:其一,限制用户或组可以拥有的inode数(文件数);其二,限制分配给用户或组的磁盘块的数目(以千字节为单位的磁盘空间)。另外,设置磁盘限额还涉及如下三个概念。
硬限制:超过此设定值后不能继续存储新的文件。
软限制:超过此设定值后仍旧可以继续存储新的文件,同时系统发出警告信息, 建议用户清理自己的文件,释放出更多的空间。
时限:超过软限制多长时间之内(默认为7天)可以继续存储新的文件。
磁盘限额是以每一使用者,每一文件系统为基础的。如果使用者可以在超过一个以上的文件系统上建立文件,那么必须在每一文件系统上分别设定。
二、可能是由于单个文件夹下面的文件数量过多,超出了文件管理系统的管理数量。我们项目中,用来存储接受文件的磁盘格式是FAT32的,其特定文件夹下最大文件数量是65,534,而我们的文件数量超过了10w,已经很不稳定了。关于各种磁盘格式对文件数量的支持请参考博客:
解决办法:
1.“我的电脑”->"属性"->"限额",查看是否超过了磁盘限额。如果没有限额标签,则说明是磁盘格式为FAT32的,需要转成NTFS格式的
2.如果是文件数量过多,则也需要将FAT32格式转为NTFS格式,
命令为:convert c:/FS:NTFS
具体可参考文章:http://blog.csdn.net/xwdpepsi/article/details/6646298