StorageFolder.GetFilesAsync() 在 HoloLens 2 (ARM64) 中不工作
StorageFolder.GetFilesAsync() is not working in HoloLens 2 (ARM64)
我有一个特定于 Windows.Storage HoloLens 2 (ARM64) 构建的问题。在 HoloLens 1 (x86) 上测试,未发现任何问题。
问题在于:GetFilesAsync 方法 returns 一个空集合,没有考虑指定 '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;
}
感谢您提前提出任何建议。
我们在访问 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");
}
我有一个特定于 Windows.Storage HoloLens 2 (ARM64) 构建的问题。在 HoloLens 1 (x86) 上测试,未发现任何问题。
问题在于:GetFilesAsync 方法 returns 一个空集合,没有考虑指定 '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;
}
感谢您提前提出任何建议。
我们在访问 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");
}