开发笔记

UWP设置文件的默认保存位置

原先以为UWP只能使用默认的那几个库。但是后来发现别人的应用中可以随意设置默认的文件保存位置。于是找到了林德熙大佬的这篇文章

重点是Windows.Storage.AccessCache这个命名空间中的FutureAccessList类可以保存或者获取最近使用的文件或文件夹。不过获取文件或者文件夹时需要用的一个Token,可以在添加文件或文件夹的时候保存下来。

1、保存文件夹

        /// <summary>
        /// 设置默认的下载文件夹
        /// </summary>
        /// <returns>
        /// </returns>
        internal static async Task SetDefaultPathAsync()
        {
            FolderPicker picker = new FolderPicker();
            picker.FileTypeFilter.Add(".png");
            var folder = await picker.PickSingleFolderAsync();
            if (folder != null)
            {
                var token = StorageApplicationPermissions.FutureAccessList.Add(folder);
               // 把token保存到了本地设置 
AppSettingsHelper.SaveLocalSetting(AppLocalSettings.ImageSavePathTokenKey, token);
            }
            else
            {
                // NotifyPopup是自己定义的通知
                var notify = new NotifyPopup("选择文件夹失败,请重试");
                notify.Show();
            }
        }

2、获取文件夹

这里在未获取到token,或者获取文件夹结果为null时,在图片库新建一个和应用名称相同的文件夹。

        /// <summary>
        /// 获取默认的下载文件夹
        /// </summary>
        /// <returns>
        /// </returns>
        internal async static Task<StorageFolder> GetImageFolderAsync()
        {
           // 从本地设置取出token
            var token = AppSettingsHelper.GetLocalSetting(AppLocalSettings.ImageSavePathTokenKey);
            if (token == null)
            {
                return await KnownFolders.PicturesLibrary.CreateFolderAsync("AppDisplayName".GetLocalized(), CreationCollisionOption.OpenIfExists);
            }
            else
            {
                var folder = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token);
                if (folder == null)
                {
                    return await KnownFolders.PicturesLibrary.CreateFolderAsync("AppDisplayName".GetLocalized(), CreationCollisionOption.OpenIfExists);
                }
                else
                {
                    return folder;
                }
            }
        }

PS:还可以使用系统自带的照片app来设置默认下载路径。以前发现的彩蛋。

UWP 通过KnownFolders.PicturesLibrary任意选择保存文件的位置 UWP 通过KnownFolders.PicturesLibrary任意选择保存文件的位置 发现这个彩蛋,源于我的应用“爱美图”,有一个用户在应用下面的评论说: 不知道下载到了哪里(后来找到了在OneDrive\图片\爱美图),不能自定义下载位置,很不方便 但是看到评论的我一脸懵逼,我使用的是... 2019-8-12 1963 4

Json一个key有多种数据类型情况的处理

上一篇

CentOS MongoDb定时备份

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
UWP设置文件的默认保存位置

长按储存图像,分享给朋友