UWP如何获得StorageDevice的可用空间和容量?

时间:2016-04-07 16:37:44

标签: c# win-universal-app

在我的UWP应用程序中,我使用此构造获取所有StorageDevices的列表:

List<StorageFolder> list = new List<StorageFolder>();
var selector = Windows.Devices.Portable.StorageDevice.GetDeviceSelector();

var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(selector);

foreach (Windows.Devices.Enumeration.DeviceInformation device in devices)
    {
        // Get device root folder
        StorageFolder rootFolder = Windows.Devices.Portable.StorageDevice.FromId(device.Id);
        list.Add(rootFolder);
    }

RemovableItems.DataContext = new RemovableStorageViewModel(list);

如何获得此设备的自由空间和容量? 我试图从文件夹道具rootFolder.Properties.RetrievePropertiesAsync(new List<string>())中获取它,但是缺少这个道具。

更新

可用的道具价值: Available props values

可用的道具键: Available props keys

为什么缺少自由空间和容量?

3 个答案:

答案 0 :(得分:0)

您是否尝试查询System.FreeSpaceSystem.Capacity属性(有关可用属性https://msdn.microsoft.com/en-us/library/windows/desktop/bb760719%28v=vs.85%29.aspx的更多信息)

用法:

var retrivedProperties = await rootFolder.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });
var freeSpace = (UInt64)retrivedProperties["System.FreeSpace"];

答案 1 :(得分:0)

我没有成功地做同样的事情。 Microsoft出于某种原因省略了这些属性。希望下一个SDK更新能解决这个问题。

答案 2 :(得分:0)

使用thang2410199的答案,我能够从Windows 10版本1803(10.0:内部版本17134)开始为某些驱动器检索“ System.FreeSpace”和“ System.Capacity”属性。

您可以在我对以下问题的回答中看到一个代码示例:Error while accessing AvailableFreeSpace/TotalSize in DriveInfo in UWP