我需要一种使用C#获取文件大小的方法,而不是磁盘上的大小。

目前我有这个循环

foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
    //file.Length (will this work)
}


这会返回磁盘的大小还是磁盘的大小?

评论

相关,但对于VB.NET:在VB.NET中确定文件大小,

#1 楼

FileInfo.Length将返回文件的长度(以字节为单位)(而不是磁盘上的大小),所以我想这就是您想要的。

评论


另外:social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/…这是关于如何获取“另一个值”(磁盘上的大小)的讨论。

– MarcinDeptuła
09年9月4日在18:39

#2 楼

如果已经有文件路径作为输入,那么这是您需要的代码:

long length = new System.IO.FileInfo(path).Length;


评论


用try / catch块将其包围,并按照此处所述检查所有可能的异常:SecurityException,UnauthorizedAccessException,PathTooLongException,NotSupportedException和-取决于您的用例-ArgumentNullException和ArgumentException

–呵呵
20-3-9的14:00



#3 楼

FileInfo.Length可以解决这个问题(在MSDN中,它“ [g]设置当前文件的大小,以字节为单位。”)。在MSDN上有一个不错的页面,可以执行常见的I / O任务。

#4 楼

MSDN FileInfo.Length表示它是“当前文件的大小,以字节为单位。”

我典型的Google搜索类似内容是:msdn FileInfo

#5 楼

它返回文件内容的长度

#6 楼

如果将文件移动到另一个文件系统(FAT16,NTFS,EXT3等)上,磁盘上的大小可能会有所不同。

正如其他答复者所说,这将为您提供以字节为单位的大小,而不是大小在磁盘上。

#7 楼

FileInfo类的Length属性返回文件的大小(而不是磁盘上的大小)。如果您想要格式化的文件大小(即15 KB)而不是长字节值,则可以使用CSharpLib,这是我制作的软件包,可为FileInfo类添加更多功能。这是一个示例:

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB