如何在.Net中获得最大允许的文件大小?

时间:2009-03-20 23:46:18

标签: c# .net filesize

有没有人知道如何(本机地)获取给定驱动器/文件夹/目录的最大允许文件大小?和Fat16一样,它是〜2gb,就我记忆而言,Fat32只有4gb,对于新的NTFS版本来说,它远远超出了那个......更不用说Mono和底层操作系统了。

有什么我可以读出/检索可能会给我一个提示吗?基本上我知道 - 应用程序将产生比2gb更大的单个文件,我想在用户设置相应的输出路径时检查...

干杯&谢谢, -J

2 个答案:

答案 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没有运气) 。但是,尽管使用了查找表,我仍然认为这是一个相当不错的纯粹托管解决方案,并且可以在所有操作系统上可靠地工作。

希望有所帮助。