0

我正在尝试获取 Windows 资源管理器属性/详细信息选项卡在我的 Windows 10 桌面上显示的所有文件属性。

我正在关注该文章中的示例: https ://docs.microsoft.com/en-us/windows/uwp/files/quickstart-getting-file-properties

我已经看到有一些函数可以获取基本和扩展文件属性。

基本示例代码如下所示:

var folder = Windows.Storage.KnownFolders.PicturesLibrary;
var query = folder.CreateFileQuery();
var files = await query.GetFilesAsync();

foreach (Windows.Storage.StorageFile file in files)
{
    StringBuilder fileProperties = new StringBuilder();

    // Get top-level file properties.
    fileProperties.AppendLine("File name: " + file.Name);
    fileProperties.AppendLine("File type: " + file.FileType);
}

我已经设法找出所需的额外步骤,使其像实现异步方法一样工作,并调整设置以访问图片库。有用。

现在我想更改代码,使其不适用于图片库,而是在我想在第一步中硬编码并在第二步中由用户选择的任何文件夹中。

不幸的是我失败了。我该如何调整代码以使其使用像 "c:\test" 这样的路径?

代码的查询方法使用了一个StorageFolder对象。

我尝试了什么:

“好老”

var di = new System.IO.DirectoryInfo("C:\test");

不会创建似乎与 StorageFolder 兼容的类型。这不起作用:

Windows.Storage.StorageFolder f = (StorageFolder)di;

这也不起作用:

Windows.Storage.StorageFolder f = new StorageFolder();

然后我找到了这个工作选项:

var folder1 = Windows.Storage.StorageFolder.GetFolderFromPathAsync("c:\test"); 

但是随后该folder.CreateFileQuery()方法对此不满意并拒绝工作。

阅读建议的类似问题后,下一次尝试:

try
{
    folder = await folder.GetFolderAsync(folderName);
}
catch (Exception)
{
    await folder.CreateFolderAsync(folderName);
}

导致此异常:

System.ArgumentException HResult=0x80070057 Nachricht = 值不在预期范围内。Quelle = System.Private.CoreLib

我确信这是一项简单的任务,但我找不到使示例与硬盘上的特定文件夹一起工作的解决方案。

谢谢。

4

1 回答 1

1

如何调整代码以使其使用“c:\test”之类的路径

如果您想以完整路径访问文件夹,首先您需要在清单中添加broadFileSystemAccess功能,然后可以在Settings > Privacy > File system中配置访问权限,以允许您的应用访问文件系统。之后,您可以将文件夹路径传递给GetFolderFromPathAsync方法以获取指定的文件夹。

var folder1 = await StorageFolder.GetFolderFromPathAsync(@"c:\test");
var query = folder1.CreateFileQuery();
var files = await query.GetFilesAsync();

foreach (Windows.Storage.StorageFile file in files)
{
    StringBuilder fileProperties = new StringBuilder();

    // Get top-level file properties.
    fileProperties.AppendLine("File name: " + file.Name);
    fileProperties.AppendLine("File type: " + file.FileType);
}
于 2020-06-12T02:07:02.957 回答