Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8.1 我可以知道当应用程序安装到SD时,手机中剩余的存储空间是多少吗?_Windows Phone 8.1 - Fatal编程技术网

Windows phone 8.1 我可以知道当应用程序安装到SD时,手机中剩余的存储空间是多少吗?

Windows phone 8.1 我可以知道当应用程序安装到SD时,手机中剩余的存储空间是多少吗?,windows-phone-8.1,Windows Phone 8.1,如果我的应用程序是由用户安装到SD的,并且在存储意义上,图片、音乐、视频、应用程序甚至下载内容都设置为存储在SD中,那么我可以知道手机中剩余的存储空间是多少吗 private async void Button_Click(object sender, RoutedEventArgs e) { Debug.WriteLine("start time:" + DateTime.Now.ToString(@"yyyy-MM-dd HH:mm:ss:fff"));

如果我的应用程序是由用户安装到SD的,并且在存储意义上,图片、音乐、视频、应用程序甚至下载内容都设置为存储在SD中,那么我可以知道手机中剩余的存储空间是多少吗

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("start time:" + DateTime.Now.ToString(@"yyyy-MM-dd HH:mm:ss:fff"));

        /* Install folder */
        StorageFolder installFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
        IReadOnlyList<StorageFolder> installFolderList = await installFolder.GetFoldersAsync();
        Debug.WriteLine("installFolderList:" + installFolderList.Count);
        IReadOnlyList<StorageFile> installFileList = await installFolder.GetFilesAsync();
        Debug.WriteLine("installFileList:" + installFileList.Count);
        ulong installSize = await GetFreeSpace(installFolder);
        Debug.WriteLine("installSize:" + installSize / 1024 / 1024 / 1024);

        /* Local folder */
        StorageFolder localFolder = ApplicationData.Current.LocalFolder;
        IReadOnlyList<StorageFolder> localFolderList = await localFolder.GetFoldersAsync();
        Debug.WriteLine("localFolderList:" + localFolderList.Count);
        IReadOnlyList<StorageFile> localFileList = await localFolder.GetFilesAsync();
        Debug.WriteLine("localFileList:" + localFileList.Count);
        ulong localSize = await GetFreeSpace(localFolder);
        Debug.WriteLine("localSize:" + localSize / 1024 / 1024 / 1024);

        /* Local cache folder */
        StorageFolder localCacheFolder = ApplicationData.Current.LocalCacheFolder;
        IReadOnlyList<StorageFolder> localCacheFolderList = await localCacheFolder.GetFoldersAsync();
        Debug.WriteLine("localCacheFolderList:" + localCacheFolderList.Count);
        IReadOnlyList<StorageFile> localCacheFileList = await localCacheFolder.GetFilesAsync();
        Debug.WriteLine("localCacheFileList:" + localCacheFileList.Count);
        ulong localCacheSize = await GetFreeSpace(localCacheFolder);
        Debug.WriteLine("localCacheSize:" + localCacheSize / 1024 / 1024 / 1024);

        /* Temporary folder */
        StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;
        IReadOnlyList<StorageFolder> tempFolderList = await tempFolder.GetFoldersAsync();
        Debug.WriteLine("tempFolderList:" + tempFolderList.Count);
        IReadOnlyList<StorageFile> tempFileList = await tempFolder.GetFilesAsync();
        Debug.WriteLine("tempFileList:" + tempFileList.Count);
        ulong tempSize = await GetFreeSpace(tempFolder);
        Debug.WriteLine("tempSize:" + tempSize / 1024 / 1024 / 1024);

        /* Picture folder */
        StorageFolder picFolder = KnownFolders.PicturesLibrary;
        IReadOnlyList<StorageFolder> picFolderList = await picFolder.GetFoldersAsync();
        Debug.WriteLine("picFolderList:" + picFolderList.Count);
        IReadOnlyList<StorageFile> picFileList = await picFolder.GetFilesAsync();
        Debug.WriteLine("picFileList:" + picFileList.Count);
        ulong picSize = await GetFreeSpace(picFolder);
        Debug.WriteLine("picSize:" + picSize / 1024 / 1024 / 1024);

        /* CameraRoll folder */
        StorageFolder cameraRollFolder = KnownFolders.CameraRoll;
        IReadOnlyList<StorageFolder> cameraRollFolderList = await cameraRollFolder.GetFoldersAsync();
        Debug.WriteLine("cameraRollFolderList:" + cameraRollFolderList.Count);
        IReadOnlyList<StorageFile> cameraRollFileList = await cameraRollFolder.GetFilesAsync();
        Debug.WriteLine("cameraRollFileList:" + cameraRollFileList.Count);
        ulong cameraRollSize = await GetFreeSpace(cameraRollFolder);
        Debug.WriteLine("cameraRollSize:" + cameraRollSize / 1024 / 1024 / 1024);

        /* Music folder */
        StorageFolder musicFolder = KnownFolders.MusicLibrary;
        IReadOnlyList<StorageFolder> musicFolderList = await musicFolder.GetFoldersAsync();
        Debug.WriteLine("musicFolderList:" + musicFolderList.Count);
        IReadOnlyList<StorageFile> musicFileList = await musicFolder.GetFilesAsync();
        Debug.WriteLine("musicFileList:" + musicFileList.Count);
        ulong musicSize = await GetFreeSpace(musicFolder);
        Debug.WriteLine("musicSize:" + musicSize / 1024 / 1024 / 1024);

        /* Videos folder */
        StorageFolder videosFolder = KnownFolders.VideosLibrary;
        IReadOnlyList<StorageFolder> videoFolderList = await videosFolder.GetFoldersAsync();
        Debug.WriteLine("videoFolderList:" + videoFolderList.Count);
        IReadOnlyList<StorageFile> videoFileList = await videosFolder.GetFilesAsync();
        Debug.WriteLine("videoFileList:" + videoFileList.Count);
        ulong videosSize = await GetFreeSpace(videosFolder);
        Debug.WriteLine("videosSize:" + videosSize / 1024 / 1024 / 1024);

        Debug.WriteLine("end time:" + DateTime.Now.ToString(@"yyyy-MM-dd HH:mm:ss:fff"));
    }

    public static async Task<ulong> GetFreeSpace(IStorageItem sf)
    {
        var properties = await sf.GetBasicPropertiesAsync();
        var filteredProperties = await properties.RetrievePropertiesAsync(new[] { "System.FreeSpace" });
        var freeSpace = filteredProperties["System.FreeSpace"];
        return (ulong)freeSpace;
    }
private async void按钮\u单击(对象发送方,路由目标)
{
Debug.WriteLine(“开始时间:+DateTime.Now.ToString(@“yyyy-MM-dd HH:MM:ss:fff”);
/*安装文件夹*/
StorageFolder installFolder=Windows.ApplicationModel.Package.Current.InstalledLocation;
IReadOnlyList installFolderList=等待installFolder.GetFoldersAsync();
Debug.WriteLine(“installFolderList:+installFolderList.Count”);
IReadOnlyList installFileList=await installFolder.getfileasync();
Debug.WriteLine(“installFileList:+installFileList.Count”);
ulong installSize=wait GetFreeSpace(installFolder);
Debug.WriteLine(“installSize:+installSize/1024/1024/1024);
/*本地文件夹*/
StorageFolder localFolder=ApplicationData.Current.localFolder;
IReadOnlyList localFolderList=等待localFolder.GetFoldersAsync();
WriteLine(“localFolderList:+localFolderList.Count”);
IReadOnlyList localFileList=await localFolder.getfileasync();
Debug.WriteLine(“localFileList:+localFileList.Count”);
ulong localSize=wait GetFreeSpace(localFolder);
Debug.WriteLine(“localSize:+localSize/1024/1024/1024);
/*本地缓存文件夹*/
StorageFolder localCacheFolder=ApplicationData.Current.localCacheFolder;
IReadOnlyList localCacheFolderList=等待localCacheFolder.GetFoldersAsync();
WriteLine(“localCacheFolderList:+localCacheFolderList.Count”);
IReadOnlyList localCacheFileList=等待localCacheFolder.GetFileAsync();
WriteLine(“localCacheFileList:+localCacheFileList.Count”);
ulong localCacheSize=wait GetFreeSpace(localCacheFolder);
Debug.WriteLine(“localCacheSize:+localCacheSize/1024/1024/1024);
/*临时文件夹*/
StorageFolder tempFolder=ApplicationData.Current.Temporary文件夹;
IReadOnlyList tempFolderList=等待tempFolder.GetFoldersAsync();
Debug.WriteLine(“tempFolderList:+tempFolderList.Count”);
IReadOnlyList tempFileList=等待tempFolder.getfileasync();
Debug.WriteLine(“tempFileList:+tempFileList.Count”);
ulong tempSize=wait GetFreeSpace(tempFolder);
Debug.WriteLine(“tempSize:+tempSize/1024/1024/1024);
/*图片文件夹*/
StorageFolder picFolder=KnownFolders.PicturesLibrary;
IReadOnlyList picFolderList=wait picFolder.GetFoldersAsync();
Debug.WriteLine(“picFolderList:+picFolderList.Count”);
IReadOnlyList picFileList=wait picFolder.getfileasync();
Debug.WriteLine(“picFileList:+picFileList.Count”);
ulong picSize=wait GetFreeSpace(picFolder);
Debug.WriteLine(“picSize:+picSize/1024/1024/1024);
/*CameraRoll文件夹*/
StorageFolder cameraRollFolder=KnownFolders.CameraRoll;
IReadOnlyList cameraRollFolderList=等待cameraRollFolder.GetFoldersAsync();
WriteLine(“cameraRollFolderList:+cameraRollFolderList.Count”);
IReadOnlyList cameraRollFileList=等待cameraRollFolder.getFileAsync();
Debug.WriteLine(“cameraRollFileList:+cameraRollFileList.Count”);
ulong cameraRollSize=等待GetFreeSpace(cameraRollFolder);
Debug.WriteLine(“cameraRollSize:+cameraRollSize/1024/1024/1024);
/*音乐文件夹*/
StorageFolder musicFolder=KnownFolders.MusicLibrary;
IReadOnlyList musicFolderList=等待musicFolder.GetFoldersAsync();
Debug.WriteLine(“musicFolderList:+musicFolderList.Count”);
IReadOnlyList musicFileList=等待musicFolder.getFileAsync();
Debug.WriteLine(“musicFileList:+musicFileList.Count”);
ulong musicSize=等待GetFreeSpace(musicFolder);
Debug.WriteLine(“musicSize:+musicSize/1024/1024/1024);
/*视频文件夹*/
StorageFolder videosFolder=KnownFolders.VideosLibrary;
IReadOnlyList videoFolderList=等待videosFolder.GetFoldersAsync();
Debug.WriteLine(“videoFolderList:+videoFolderList.Count”);
IReadOnlyList videoFileList=wait videosFolder.getfileasync();
Debug.WriteLine(“videoFileList:+videoFileList.Count”);
ulong videosSize=等待GetFreeSpace(videosFolder);
Debug.WriteLine(“videosSize:+videosSize/1024/1024/1024);
Debug.WriteLine(“结束时间:+DateTime.Now.ToString(@“yyyy-MM-dd HH:MM:ss:fff”);
}
公共静态异步任务GetFreeSpace(IStorageItem sf)
{
var properties=await sf.GetBasicPropertiesAsync();
var filteredProperties=await properties.RetrievePropertiesAsync(新[]{“System.FreeSpace”});
var freeSpace=filteredProperties[“System.freeSpace”];
返回(乌龙)自由空间;
}

根据上面的评论回答:

列举图片库,应该有2个CameraRoll文件夹,一个内部文件夹和一个外部文件夹。使用

StorageFolder.Path

并检查路径是否以C:\开头,以查看文件夹是内部文件夹还是外部文件夹

我不确定该文件夹是否可用,好像用户已将所有内容都设置为SD(音乐、应用程序、图片…),然后,您无法从手机访问任何文件夹,用户也不希望在手机上复制/安装任何文件。您可以检查从库中返回的文件,看看其中是否有一个在内部存储器中吗?然后你就可以得到我认为的空闲空间了。在研究这个问题很长时间后,如果所有内容都设置为SD,我无法通过公共API找到属于手机的StorageFolder obj:(需要尝试的两件事是:枚举