如何在Windows 8.1(winRT)中获取本地文件夹大小

Jit*_*dav 3 c# windows-runtime winrt-xaml windows-store-apps windows-8.1

我有一个Windows 8.1商店应用程序.我想找到本地文件夹大小.(例如210 MB)

我有一个应用程序,可以将一些内容下载到我的本地文件夹中.我想检查我的本地文件夹的大小(例如当前有多少MB).

我试过通过MSDN和Google查看,但一直无法找到它.

注意:我有一个文件夹和子文件夹,所以不仅是本地文件夹中的文件..

Nat*_*ond 7

您可以LocalFolder通过ApplicationData.LocalFolder酒店进入.

LocalFolder是一个StorageFolder对象.StorageFolder有一个叫做的方法GetBasicPropertiesAsync.

GetBasicPropertiesAsync返回一个BasicProperties对象.此BasicProperties对象具有一个Size属性,可以告诉您相关项目的大小(文件夹或文件).我相信这Size是以字节(a ulong)为单位.

完整的命令可以在一行中完成,async如下所示:

(await ApplicationData.LocalFolder.GetBasicPropertiesAsync()).Size;

如果您需要任何其他信息,也可以拆分每个步骤.

编辑:显然这不如希望的那样好.解决方案是创建查询并总结所有文件.你可以使用Linq来做到这一点.

using System.Linq;

// Query all files in the folder. Make sure to add the CommonFileQuery
// So that it goes through all sub-folders as well
var folders = ApplicationData.LocalFolder.CreateFileQuery(CommonFileQuery.OrderByName);

// Await the query, then for each file create a new Task which gets the size
var fileSizeTasks = (await folders.GetFilesAsync()).Select(async file => (await file.GetBasicPropertiesAsync()).Size);

// Wait for all of these tasks to complete. WhenAll thankfully returns each result
// as a whole list
var sizes = await Task.WhenAll(fileSizeTasks);

// Sum all of them up. You have to convert it to a long because Sum does not accept ulong.
var folderSize = sizes.Sum(l => (long) l);
Run Code Online (Sandbox Code Playgroud)

  • 这不是给我大小,但它只会显示0(零) (2认同)