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"));

 

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

UWP 更强大的文件获取能力_第1张图片

 

 

 

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

添加下面的代码

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

<Package
  ...
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap mp uap5 rescap">
...

    "broadFileSystemAccess" />

 

然后开始写代码测试:

 

        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);
        }

 

 

UWP 更强大的文件获取能力_第2张图片

 

你可能感兴趣的:(UWP 更强大的文件获取能力)