0

我有一个针对 HoloLens 2 (ARM64) 的 Windows.Storage 构建的问题。在 HoloLens 1 (x86) 上测试,没有发现任何问题。

问题是:GetFilesAsync 方法返回一个空集合,而不考虑指定的“KnownFolders”目录中是否存在文件。GetItemsAsync 方法也是如此(未针对文件夹进行测试)。

当使用 GetFileAsync() 方法在同一“KnownFolders”目录中加载现有文件时,结果是正确的。

配置:

  • UWP Visual Studio 模板。
  • 目标版本 1903,内部版本 18362。
  • HoloLens 2 设备
  • 设备 windows 版本 10.0.19041.1136。

这是一个代表:

    private async Task<string[]> GetNames()
    {
        StorageFolder storageFolder = KnownFolders.Objects3D;
        IReadOnlyList<StorageFile> files = await storageFolder.GetFilesAsync();

        string[] names = files.Select(f => f.Name).ToArray();

        return names;
    }

感谢您提前提出任何建议。

4

1 回答 1

0

我们在访问 Object3D 文件夹时重现了这个问题,我们认为这是因为我们并不真正期望在 HoloLens OS 的 Object3D 文件夹中有一些非模型文件类型。我们确实有一个解决方案,即获取一个包含当前文件夹中符合条件的文件的查询结果对象,并调用查询结果的 GetFilesAsync 方法来获取文件的平面列表。这是答案:

        StorageFolder objects3DFolder = KnownFolders.Objects3D;

        // Set query options with filter and sort order for results
        List<string> fileTypeFilter = new List<string>();
        // Determines which file types to include in query results.
        fileTypeFilter.Add(".txt");

        var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, fileTypeFilter);
        var query = KnownFolders.Objects3D.CreateFileQueryWithOptions(queryOptions);

        var files = await query.GetFilesAsync(); 

        Debug.WriteLine($"The count of collection is via files.Count :{files.Count}");
        StorageFile file = await objects3DFolder.GetFileAsync("bb.txt");
        if (file!=null)
        {
            Debug.WriteLine($"Find the specified file {file.Name} successfully");
        }
于 2021-03-22T06:39:15.667 回答