如何在存储设备上可用 space
How to get available space on Storage Device
我正在开发 Windows 应用商店应用程序(Windows 8.1,使用 VS2012),我在 检索 available/used space 来自特定的存储文件夹,它是从存储设备中检索到的。需要说明的是,此应用旨在 运行 在桌面上,并与通过存储设备 api 连接的 USB 设备交换文件 api。
这是我目前所拥有的:
StorageFolder folder = Windows.Devices.Portable.StorageDevice.FromId(phoneId);
UInt64[] info = new UInt64[] {};
var properties = await folder.Properties.RetrievePropertiesAsync(
new string[] { "System.FreeSpace", "System.Capacity" });
if (properties.ContainsKey("System.FreeSpace") && properties.ContainsKey("System.FreeSpace"))
{
info = new UInt64[] {
(UInt64) properties["System.FreeSpace"],
(UInt64) properties["System.Capacity"]
};
}
return info;
但是没有成功,'info'总是一个空数组。有什么想法吗?
我发现我做错了什么。我的 StorageFolder 对象表示连接到桌面的 phone。如果通过资源管理器访问 Phone 文件夹,将看到其 'inner folders',这是 phone 中的实际存储文件夹(例如内部存储、SD 卡等)。
使用 phones 执行此操作的正确方法是访问子文件夹(即每个内部存储)。我现在使用的代码:
StorageFolder folder = Windows.Devices.Portable.StorageDevice.FromId(phoneId);
var data = new List<Tuple<string, UInt64[]>> { };
IReadOnlyList<StorageFolder> subFolders = await folder.GetFoldersAsync();
foreach (StorageFolder subFolder in subFolders)
{
var props = await subFolder.Properties.RetrievePropertiesAsync(
new string[] { "System.FreeSpace", "System.Capacity" });
if (props.ContainsKey("System.FreeSpace") && props.ContainsKey("System.Capacity"))
{
data.Add(Tuple.Create(
subFolder.Name,
new UInt64[] {
(UInt64) props["System.FreeSpace"],
(UInt64) props["System.Capacity"]
}));
}
}
return data;
我正在开发 Windows 应用商店应用程序(Windows 8.1,使用 VS2012),我在 检索 available/used space 来自特定的存储文件夹,它是从存储设备中检索到的。需要说明的是,此应用旨在 运行 在桌面上,并与通过存储设备 api 连接的 USB 设备交换文件 api。
这是我目前所拥有的:
StorageFolder folder = Windows.Devices.Portable.StorageDevice.FromId(phoneId);
UInt64[] info = new UInt64[] {};
var properties = await folder.Properties.RetrievePropertiesAsync(
new string[] { "System.FreeSpace", "System.Capacity" });
if (properties.ContainsKey("System.FreeSpace") && properties.ContainsKey("System.FreeSpace"))
{
info = new UInt64[] {
(UInt64) properties["System.FreeSpace"],
(UInt64) properties["System.Capacity"]
};
}
return info;
但是没有成功,'info'总是一个空数组。有什么想法吗?
我发现我做错了什么。我的 StorageFolder 对象表示连接到桌面的 phone。如果通过资源管理器访问 Phone 文件夹,将看到其 'inner folders',这是 phone 中的实际存储文件夹(例如内部存储、SD 卡等)。
使用 phones 执行此操作的正确方法是访问子文件夹(即每个内部存储)。我现在使用的代码:
StorageFolder folder = Windows.Devices.Portable.StorageDevice.FromId(phoneId);
var data = new List<Tuple<string, UInt64[]>> { };
IReadOnlyList<StorageFolder> subFolders = await folder.GetFoldersAsync();
foreach (StorageFolder subFolder in subFolders)
{
var props = await subFolder.Properties.RetrievePropertiesAsync(
new string[] { "System.FreeSpace", "System.Capacity" });
if (props.ContainsKey("System.FreeSpace") && props.ContainsKey("System.Capacity"))
{
data.Add(Tuple.Create(
subFolder.Name,
new UInt64[] {
(UInt64) props["System.FreeSpace"],
(UInt64) props["System.Capacity"]
}));
}
}
return data;