gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:46:19 26 4
gpt4 key购买 nike

我有一个 Windows 8.1 商店应用程序。我正在尝试查找本地文件夹大小。?(例如 210 MB)

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

我曾尝试通过 MSDN 和 Google 进行查找,但未能在其中找到任何内容。

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

最佳答案

您可以通过 ApplicationData.LocalFolder 访问 LocalFolder属性(property)。

这个 LocalFolder 是一个 StorageFolder目的。 StorageFolder 有一个名为 GetBasicPropertiesAsync 的方法.

GetBasicPropertiesAsync 返回 BasicProperties目的。此 BasicProperties 对象有一个 Size属性告诉您相关项目(文件夹或文件)的大小。我相信 Size 以字节为单位(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);

关于c# - 如何在 Windows 8.1 (winRT) 中获取本地文件夹大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com