我想解析用户可以选择的文件夹。 但是,如果我了解,UWP 中不允许绝对路径,因为媒体(xbox、Windows Phone、Windows 桌面等)之后的磁盘不同
?因此,我有一个名为 Parser 的类,它可以解析用户选择的路径,但现在只能解析当前文件夹。
这不起作用:
Parser parser = new Parser(@"C:abc");
parser.createTreeView(tree);
请帮帮我。提前谢谢你。
编辑:这是我的解析器类=>
public TreeViewItem Parse(DirectoryInfo directoryInfo)
{
try
{
var directoryNode = new TreeViewItem { Header = directoryInfo.Name };
Convention convention = new Convention();
foreach (var directory in directoryInfo.GetDirectories())
{
directoryNode.Items.Add(Parse(directory));
System.Diagnostics.Debug.WriteLine("test : " + directory.Name);
}
foreach (var file in directoryInfo.GetFiles())
{
if (file.Name.Contains(EConvention.INSTALL))
{
listFiles.Add(file.FullName);
}
TreeViewItem item = new TreeViewItem
{
Header = Path.GetFileNameWithoutExtension(file.FullName),
Tag = file.FullName
};
directoryNode.Items.Add(item);
}
return directoryNode;
}
catch (System.UnauthorizedAccessException e)
{
//MessageDialog dialog = new MessageDialog(""+e.Message);
dialogAsync(e.Message);
return new TreeViewItem();
}
}
public void CreateTreeView(TreeView tree)
{
DirectoryInfo dir = new DirectoryInfo(pathToParse);
System.Diagnostics.Debug.WriteLine("dir exists ? "+dir.Exists);
if (dir.Exists)
{
System.Diagnostics.Debug.WriteLine("dir existe");
TreeViewItem root = new TreeViewItem() { Header = dir.Name };
root.Tag = dir;
tree.Items.Add(Parse(dir));
}
}
UWP 应用无权访问设备上的所有文件。默认情况下,应用可以访问某些文件系统位置。应用还可以通过文件选取器或声明功能来访问其他位置。有关详细信息,请参阅文件访问权限
虽然,我们可以在 UWP 应用中使用DirectoryInfo
,但它只能与 UWP 应用默认可以访问的文件夹一起使用,例如安装目录和本地文件夹等。UWP 应用的 System.IO 命名空间中的大多数类型都有类似的限制。在 UWP 中处理文件或文件夹时,一条重要规则是跳过路径:坚持使用存储文件。
你可以使用文件夹选取器让用户选择一个文件夹,然后将其添加到应用的FutureAccessList或MostRecent UsedList以跟踪它。可以在如何跟踪最近使用的文件和文件夹中了解有关使用这些列表的详细信息。在此之后,您将能够随时从FutureAccessList
或MostRecentlyUsedList
中检索存储文件夹。
有了StorageFolder
,就可以在Parse
中使用GetFilesAsync()或GetFolderAsync()方法,而不是DirectoryInfo.GetDirectories
或DirectoryInfo.GetFiles
方法。