如何在通用的Windows Phone 8.1应用程序中找到可用的空闲空间?

本文关键字:空间 Windows Phone 应用程序 | 更新日期: 2023-09-27 18:01:43

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

int availableStorage = IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace;

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

如何在通用的Windows Phone 8.1应用程序中找到可用的空闲空间?

可以这样回答这个问题。正如我所尝试的那样,下面代码中的方法返回空闲字节数:

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();

更多关于属性检索(格式等),你可以在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(例如,它可以是图片库等,也确保你在你的清单文件中添加的功能,否则你会得到一个例外)-同样的情况取决于用户设置-它可以是手机或SD空间

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

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

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