有谁知道如何访问通用 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/