繁体   English   中英

如何在存储设备上获取可用空间

[英]How to get available space on Storage Device

我正在使用Windows Store应用程序(Windows 8.1,使用VS2012),但无法从特定的Storage Folder检索可用/已使用的空间,该文件夹是从存储设备中检索到的。 需要明确的是,该应用程序旨在在桌面上运行,并通过存储设备API与与其连接的USB设备交换文件。

这是我到目前为止所拥有的:

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;

但是没有成功,“信息”始终是一个空数组。 有任何想法吗?

我发现自己在做什么错。 我的StorageFolder对象代表连接到桌面的电话。 如果通过浏览器访问“电话”文件夹,将看到其“内部文件夹”,这是电话中的实际存储文件夹(例如,内部存储,SD卡等)。

用手机执行此操作的正确方法是访问子文件夹(即每个内部存储器)。 我现在使用的代码:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM