读取U盘的文件时:
StorageFile file = await folder.GetFileAsync("myfile.txt");
抛出异常System.UnauthorizedAccessException: 拒绝访问。
解决方案:
参考:https://msdn.microsoft.com/library/windows/apps/windows.storage.knownfolders.removabledevices.aspx
注意 您的应用程序在清单中必须使用“文件类型关联”声明显式声明哪种文件类型(扩展)将在可移动设备文件夹中访问。
此文件夹对应于“我的电脑”中的“可移动的设备”部分,同时也包括诸如 USB 闪存驱动器和外置硬盘的设备。
打开项目中的应用部件清单文件 (Package.appxmanifest)
- 1.在“功能”选项卡中勾选"可移动存储"。
- 2.在“声明”选项卡中。
- 从下拉列表中选择“文件类型关联”,然后单击“添加”。
- 输入 txt
作为“名称”。
- 输入
.txt
作为“文件类型”。 - 输入“images\Icon.png”作为“徽标”。
- 按 Ctrl+S 保存对 package.appxmanifest 的更改。
重新运行即可。
代码:
//读取U盘中的txt文件 StringBuilder foldersName = new StringBuilder(); var removableDisksName = ""; var removableStorages = await KnownFolders.RemovableDevices.GetFoldersAsync(); if (removableStorages.Count > 0) { // 遍历每个可移动存储设备 foreach (StorageFolder storage in removableStorages) { removableDisksName += storage.DisplayName + "\n"; var folderList = await storage.GetFoldersAsync();//获取存储设备下的目录 foreach (StorageFolder folder2 in folderList) { foldersName.Append(folder2.DisplayName + "\n"); if (folder2.DisplayName.Equals("myfolder", StringComparison.OrdinalIgnoreCase)) { openFile(folder2); } } async void openFile(StorageFolder folder) { StorageFile file = await folder.GetFileAsync("myfile.txt"); using (Stream fs = await file.OpenStreamForReadAsync()) { using (StreamReader read = new StreamReader(fs)) { string output = read.ReadToEnd(); int iiii = 0; } } } } } else { //没有移动存储连接到电脑 }