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

Posted

技术标签:

【中文标题】如何在.Net中获得最大允许的文件大小?【英文标题】:How to get max allowed filesize in .Net? 【发布时间】:2009-03-20 23:46:17 【问题描述】:

有谁知道如何(本机)获取给定驱动器/文件夹/目录的最大允许文件大小?至于 Fat16,它大约是 2gb,Fat32 是 4gb,据我所知,对于较新的 NTFS 版本,它远远超出了这个范围。更不用说 Mono 和底层操作系统了。

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

干杯,谢谢, -J

【问题讨论】:

【参考方案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 不兼容) .然而,我认为这是一个相当不错的纯托管解决方案,尽管使用了查找表,并且具有在所有操作系统上可靠工作的好处。

希望对您有所帮助。

【讨论】:

【参考方案2】:

如何使用 System.Info.DriveInfo.DriveFormat 检索驱动器的文件系统(NTFS、FAT 等)?这应该至少让您对支持的文件大小有所了解。

【讨论】:

以上是关于如何在.Net中获得最大允许的文件大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中更改 Multipart 文件的最大大小?

更改最大上传文件大小

更改最大上传文件大小

未收到要导入的数据。没有提交文件名,或者文件大小超过了 PHP 配置允许的最大大小

如何调整待上传的文件大小

asp.net开发,form表单,file文件上传