Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得文件大小(以C为单位)?_C#_Filesize - Fatal编程技术网

C# 如何获得文件大小(以C为单位)?

C# 如何获得文件大小(以C为单位)?,c#,filesize,C#,Filesize,我需要一种使用C#获取文件大小的方法,而不是磁盘上的大小。这怎么可能 目前我有这个循环 foreach (FileInfo file in downloadedMessageInfo.GetFiles()) { //file.Length (will this work) } 这将返回大小还是磁盘上的大小?FileInfo.Length将返回文件的长度,以字节为单位(而不是磁盘上的大小),因此我认为这就是您要查找的内容。它返回文件内容的长度将起到作用(根据MSDN,它“[g]设置当前文

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

目前我有这个循环

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

这将返回大小还是磁盘上的大小?

FileInfo.Length
将返回文件的长度,以字节为单位(而不是磁盘上的大小),因此我认为这就是您要查找的内容。

它返回文件内容的长度将起到作用(根据MSDN,它“[g]设置当前文件的大小,以字节为单位”。)MSDN上有一个关于常见I/O任务的好消息。

说它是“当前文件的大小(以字节为单位)”


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

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


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

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

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

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

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

另外:这是关于如何获取“其他值”的讨论,即磁盘上的大小。没有“FileInfo.Length”方法!请记住,您指定了静态方法的调用。真正的答案是
newfileinfo(path).Length
对于批量操作来说可能很重。相关的,但对于VB.NET:,用try/catch块将其包围,并按说明检查所有可能的异常:SecurityException、UnauthorizedAccessException、PathTooLongException、,NotSupportedException和-取决于您的用例-ArgumentNullException和ArgumentException