题
有谁知道如何(本地)获取给定的驱动器/文件夹/目录允许的最大文件的大小?作为在FAT16是〜2GB,FAT32是4GB,据我记得,为新的NTFS版本是这样的东西超出了..更不用说单声道和底层操作系统。
有什么我可以读出/检索可能给我一个提示吗?基本上我-know-可以应用会产生更大的,单个文件超过2GB,我想以检查当用户将相应的输出路径(S)...
干杯&感谢, -J
解决方案
这可能不是理想的解决方案,但我会建议反正以下内容:
// Returns the maximum file size in bytes on the filesystem type of the specified drive.
long GetMaximumFileSize(string drive)
{
var driveInfo = new System.IO.DriveInfo(drive)
switch(driveInfo.DriveFormat)
{
case "FAT16":
return 1000; // replace with actual limit
case "FAT32":
return 1000; // replace with actual limit
case "NTFS":
return 1000; // replace with actual limit
}
}
// Examples:
var maxFileSize1 = GetMaximumFileSize("C"); // for the C drive
var maxFileSize2 = GetMaximumFileSize(absolutePath.Substring(0, 1)); // for whichever drive the given absolute path refers to
在维基百科上这页面包含的最大文件大小的一个相当全面的列表各种各样的文件系统。根据您要在GetMaximumFileSize
函数来检查文件系统的数量,您可能需要使用一个Dictionary对象,甚至一个简单的数据文件,而不是一个switch语句。
现在,你的可能的被检索直接使用WMI或什至在Windows API的最大文件大小,但这些解决方案当然只与Windows兼容的(即具有单声道/ Linux上没有运气) 。不过,我认为这是一个合理的很好的纯粹管理解决方案,尽管使用的查找表,并已对所有操作系统可靠工作的奖励。
希望有所帮助。
其他提示
如何使用System.Info.DriveInfo.DriveFormat检索驱动器的文件系统(NTFS,FAT,等。)?这应该给你支持的文件大小中的至少一些想法。
不隶属于 StackOverflow