默认情况下,通用 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);
}

最新文章

  1. Dell xps 13 9350待机时总是关机的处理方法
  2. Linux系统启动过程分析
  3. phpQuery—基于jQuery的PHP实现
  4. (转) ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(
  5. Demo学习: Closable Tabs
  6. JS获得QQ号码的昵称,头像,生日
  7. 关于offsetWidth innerWidth的使用
  8. android 开发环境搭建 (转)
  9. Lucene学习总结之二:Lucene的总体架构
  10. 上传form表单
  11. hdu2534-Score
  12. win8 wifi开关显示关闭,且设置里面wifi开关显示灰色的解决办法
  13. 拥抱.NET Core系列:Logging (1)
  14. 包建强的培训课程(12):iOS深入学习(内存管理、Block和GCD等)
  15. mysql distinct 用法详解及优化
  16. BZOJ[Usaco2017 Jan]Promotion Counting——线段树合并
  17. 测试那些事儿—BUG
  18. [ORA-28001: the password has expired]的处理
  19. Python开发【项目】:博客后台
  20. UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position 16-22: ordinal not in range(128)

热门文章

  1. 性能测试——记XX银行保全项目性能问题分析优化
  2. [译]Nginx入门引导教程
  3. Reactor和Proactor模型
  4. Linux服务和systemctl详解
  5. solr数据操作
  6. 【Android - 自定义View】之View的工作过程简介
  7. DNS服务反向解析实验
  8. Day01-变量/常量/数据类型/流程控制之 if
  9. python_迭代器和生成器、字节串、字节数组
  10. Linux内核设计与实现笔记_1_基本概念