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

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

int availableStorage = IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace; 

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

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

 public async Task 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 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引用安装App的地方 – 所以如果用户设置了应用程序将安装在SD上,那么你将看到SD卡上的空闲位置,
  • KnownFolders.MusicLibrary (例如,它可以是PicturesLibrary等,也确保您在清单文件中添加了可用性,否则您将获得exception) – 相同的情况取决于用户设置 – 它可以是电话或SD上的空间

因此,如果应用程序安装在手机上,然后在LocalFolder上LocalFolder您将在手机上获得空间。 如果你想在SD上有空间,那么你可以运行这样的方法(记住function):

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

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