381

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

目前我有这个循环

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

这会返回磁盘上的大小或大小吗?

4

7 回答 7

498

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

long length = new System.IO.FileInfo(path).Length;
于 2013-12-31T20:53:29.640 回答
403

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

于 2009-09-04T18:34:14.720 回答
43

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

于 2009-09-04T18:34:34.907 回答
12

MSDN FileInfo.Length说它是“当前文件的字节大小”。

我典型的谷歌搜索是这样的: msdn FileInfo

于 2009-09-04T18:35:21.007 回答
8

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

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
于 2020-06-07T22:48:33.400 回答
5

它返回文件内容长度

于 2009-09-04T18:34:34.860 回答
4

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

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

于 2009-09-04T18:37:29.643 回答