读取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
{
//没有移动存储连接到电脑
}