UWP 更强大的文件获取能力

原文: UWP 更强大的文件获取能力

默认情况下,通用 Windows 平台 (UWP) 应用可以访问特定文件系统位置。 应用也可以通过文件选取器或通过声明功能访问其他位置。

在创建新的应用时,默认情况下你可以访问以下文件系统位置:

1. 应用程序安装目录

Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;

或者直接指定需要的文件

using Windows.Storage;            
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///file.txt"));

2. 应用程序数据位置

 使用 ApplicationData 属性检索应用数据文件夹。

using Windows.Storage;
StorageFolder localFolder = ApplicationData.Current.LocalFolder;

如果希望访问应用的漫游或临时文件夹,可以改用 RoamingFolder 或 TemporaryFolder 属性。

3. 用户的“下载”文件夹

 你可以在用户的下载文件夹中创建文件

using Windows.Storage;
StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");

你可以在用户的“下载”文件夹中创建子文件夹

using Windows.Storage;
StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("New Folder");

4. 其它文件夹

文档 DocumentsLibrary

注意:必须将文件类型关联(该关联声明应用可以在此位置中访问的特定文件类型)添加到应用清单。

你的应用使用此功能的情况:
- 使用有效的 OneDrive URL 或资源 ID 促进跨平台离线访问特定 OneDrive 内容
- 在离线时将打开的文件自动保存到用户的 OneDrive
KnownFolders.DocumentsLibrary
音乐 MusicLibrary
另请参阅音乐、图片和视频库中的文件和文件夹
KnownFolders.MusicLibrary
图片 PicturesLibrary
另请参阅音乐、图片和视频库中的文件和文件夹
KnownFolders.PicturesLibrary
视频 VideosLibrary
另请参阅音乐、图片和视频库中的文件和文件夹
KnownFolders.VideosLibrary
可移动设备 RemovableDevices

必须将文件类型关联(该关联声明应用可以在此位置中访问的特定文件类型)添加到应用清单。

另请参阅访问 SD 卡
KnownFolders.Re

 

5. 更强大文件获取能力

5. 更强大文件获取能力

5. 更强大文件获取能力

这功能几乎颠覆了UWP之前的历史,可以获取除了C盘以外所有的文件。

但是,这个权限需要跟用户申请,用户手动确认了,你才可以。

在执行你的超能力之前,你需要引导用户,给你的App权限:隐私——文件系统。

使用代码直达:

await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings:ms-settings:privacy-broadfilesystemaccess"));

这样就打开了这么一个界面。

然后就是配置一下你的Package.appxmanifest文件。用文本查看器打开

添加下面的代码

应该你的文件里面存在了IgnorableNamespace,你只需要把rescap加进去即可。

复制代码
<Package
  ...
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp uap5 rescap">
...
<Capabilities>
    <rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
复制代码

然后开始写代码测试:

复制代码
        string dir = "D:\\";
        string fileName = "sample.txt";

        private async void Read_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
        {
            StorageFile file = await StorageFile.GetFileFromPathAsync(Path.Combine(dir, fileName));
            TextBox_Content.Text = await FileIO.ReadTextAsync(file);
        }

        private async void Write_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
        {
            StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(dir);
            StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);
            await FileIO.WriteTextAsync(file, TextBox_Content.Text);
        }
复制代码

猜你喜欢

转载自www.cnblogs.com/lonelyxmas/p/12094852.html
UWP
今日推荐