【发布时间】:2014-07-23 07:03:19
【问题描述】:
要求:在合理的时间范围内获取文件夹或远程计算机的大小。
WMI 枚举目录并计算其内容大小的时间太长。
我尝试了以下代码,但它说它不是有效的路径
String Folder = Row["Location"].ToString();
String[] Files = Directory.GetFiles(@"\\" + Folder.Remove(0, 2) + @"\c$" + Folder, "*", SearchOption.AllDirectories);
long TotalFolderSize = 0;
foreach (String File in Files)
{
TotalFolderSize += new FileInfo(File).Length;
}
我对@987654323@ 并没有那么好,对 C# 来说还是很陌生。我看到Kernel32.dll 有一些文件和磁盘调用,但找不到有关文件夹或目录的任何信息。
所以问题是
C# 中是否有 API/Function 可以通过网络获取目录的大小。
是否有可用于执行此操作的 PInvoke 调用
最好的方法是什么?
【问题讨论】:
-
tbh 对于网络共享,您的方法是正确的(获取一个文件夹并遍历文件)。我不确定您在第二行尝试什么,但我会移动该字符串操作并将其放入单独的变量中。
-
正如@AbdulMajid 指出的,这个问题已经在一段时间前被问到了——并且没有什么真正的新东西可用(对于本地/远程目录)。请务必阅读有关链接问题中“文件/文件夹大小”陷阱的长答案。
-
据我从我们公司的网络中得知,代码本身可以工作。可能是文件夹路径格式错误?
Row["Location"]的具体内容是什么?