我需要一种方法来使用C#获取文件的大小,而不是磁盘上的大小.这怎么可能?
目前我有这个循环
foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
//file.Length (will this work)
}
Run Code Online (Sandbox Code Playgroud)
这会返回磁盘上的大小或大小吗?
如何使用.NET获得以字节为单位的人类可读文件大小?
示例:输入输入7,326,629并显示6.98 MB
有没有简单的方法来创建一个使用的类 IFormatProvider它写出一个用户友好的文件大小?
public static string GetFileSizeString(string filePath)
{
FileInfo info = new FileInfo(@"c:\windows\notepad.exe");
long size = info.Length;
string sizeString = size.ToString(FileSizeFormatProvider); // This is where the class does its magic...
}
Run Code Online (Sandbox Code Playgroud)
它应该导致字符串格式化为" 2,5 MB "," 3,9 GB "," 670字节 "等等.
我在我的C#项目中使用DriveInfo类来检索给定驱动器上的可用字节.如何正确地将此数字转换为兆字节或千兆字节?除以1024将无法完成我的工作.结果总是与Windows资源管理器中显示的结果不同.
可能重复:
如何在C#中获取目录大小(目录中的文件)?
在vbscript中,获取GB或MB的文件夹大小非常简单:
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim fSize = CInt((oFSO.GetFolder(path).Size / 1024) / 1024)
WScript.Echo fSize
Run Code Online (Sandbox Code Playgroud)
在C#中,通过我的所有搜索,我可以想到的是对所有子文件夹中的每个文件大小进行冗长,复杂,递归的搜索,然后在最后添加它们.
没有其他办法吗?