有没有人知道如何(本机地)获取给定驱动器/文件夹/目录的最大允许文件大小?和Fat16一样,它是〜2gb,就我记忆而言,Fat32只有4gb,对于新的NTFS版本来说,它远远超出了那个......更不用说Mono和底层操作系统了。
有什么我可以读出/检索可能会给我一个提示吗?基本上我知道 - 应用程序将产生比2gb更大的单个文件,我想在用户设置相应的输出路径时检查...
干杯&谢谢, -J
答案 0 :(得分:1)
如何使用System.Info.DriveInfo.DriveFormat检索驱动器的文件系统(NTFS,FAT等)?这至少应该让你对支持的文件大小有所了解。
答案 1 :(得分:1)
这可能不是理想的解决方案,但无论如何我会建议如下:
// 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
维基百科上的 This页面包含各种文件系统的最大文件大小的相当全面的列表。根据要在GetMaximumFileSize
函数中检查的文件系统的数量,您可能希望使用Dictionary对象甚至是简单的数据文件而不是switch语句。
现在,您可能直接使用WMI或甚至Windows API检索最大文件大小,但这些解决方案当然只与Windows兼容(即Mono / Linux没有运气) 。但是,尽管使用了查找表,我仍然认为这是一个相当不错的纯粹托管解决方案,并且可以在所有操作系统上可靠地工作。
希望有所帮助。