c# - 如何找出通用 Windows Phone 8.1 应用程序中的可用空间

标签 c# windows-phone windows-phone-8.1

有谁知道如何访问通用 Windows Phone 8.1 应用程序中的可用空间?在 Windows Phone 8(.1) Silverlight 应用程序中,我可以使用此代码:

int availableStorage = IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace;

但是 System.IO.IsolatedStorage 在 Windows(手机)8.1 应用程序中不可用。

最佳答案

可以做到like in answers to this question .正如我所尝试的,下面代码中的方法返回空闲字节数:

public async Task<UInt64> GetFreeSpace()
{
    StorageFolder local = ApplicationData.Current.LocalFolder;
    var retrivedProperties = await local.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });
    return (UInt64)retrivedProperties["System.FreeSpace"];
}

// usage:
UInt64 myFreeSpace = await GetFreeSpace();

有关要检索的属性(它们的格式等)的更多信息,您可以 find at MSDN .


更多信息 - 请注意,该方法获取它所引用的文件夹的可用空间。所以如果我们像这样运行它:

public async Task<UInt64> GetFreeSpace(StorageFolder folder)
{
    var retrivedProperties = await folder.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });
    return (UInt64)retrivedProperties["System.FreeSpace"];
}

// and use it like this:
UInt64 spaceOfInstallationFolder = await GetFreeSpace(ApplicationData.Current.LocalFolder);
UInt64 spaceOfMusicLibrary = await GetFreeSpace(KnownFolders.MusicLibrary);

我们将根据用户手机的设置获得结果:

  • ApplicationData.Current.LocalFolder 指向安装应用程序的位置 - 因此如果用户设置应用程序将安装在 SD 上,那么您将在 SD 卡上看到空闲位置,<
  • KnownFolders.MusicLibrary(例如,它可以是 PicturesLibrary 等,还要确保您在 list 文件中添加了功能,否则会出现异常) - 同样的情况取决于用户设置 - 它可以是手机或 SD 上的空间

因此,如果该应用程序安装在手机上,则引用 LocalFolder 您将在手机上获得空间。如果你想要 SD 上的空间,那么你可以像这样运行方法(记住功能):

UInt64 spaceOfMusicLibrary = await GetFreeSpace((await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault());

另请注意,如果用户已将所有内容(应用程序、音乐、图片)设置为安装在 SD 上(应用程序、音乐、图片),则获取手机的可用空间是无用的,因为您将无法使用它(未经授权的访问)。很简单 - 如果您有权访问一个文件夹,您就可以获得它的可用空间。

关于c# - 如何找出通用 Windows Phone 8.1 应用程序中的可用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445993/

相关文章:

c# - python 的 "urllib2"在 dot net 中的等价物是什么?

c# - 返回带有列表对象的列表对象

linux - 在 Linux 主机上虚拟化 Windows 7 以进行 Windows Phone 应用程序开发

c# - 未从 ADAL 库调用 AuthenticationContext 委托(delegate)

c# - 有什么方法可以将以编程方式创建的 UIElement 保存在图像文件中吗?

c# - Webview 控件在 WP 8.1 Runtime 中消耗过多内存

c# - WPF MVVM ObservableCollection/DataGrid 多个 Sql 表

c# - JSON 到 C#——在 json 中列出没有子字段名称的字段?

javascript - 在 Windows Phone 上禁用双击缩放

c# - 滚动 X 轴绘图区 - Silverlight 列系列