我在已知文件夹.视频库中有两个同名的文件,因此无法通过其名称访问该文件,因此只会返回第一个文件。那么除了解析文件夹中的所有文件之外,是否还有其他方法可以获取文件?
// this return two files
var files = (await KnownFolders.VideosLibrary.GetFilesAsync()).Where(x => x.Name == "test.txt").ToArray();
// with this I can get only one file
StorageFile file = await KnownFolders.VideosLibrary.GetFileAsync("test.txt");
// of course I can parse it with query, but I would like to avoid it
// StorageFile myFile = (await KnownFolders.VideosLibrary.GetFilesAsync()).FirstOrDefault(x => x.FolderRelativeId == "something");
我知道FutureAccessList,但它只能容纳1000个文件,对我来说不够。
根据请求提供一些澄清:
例如,假设应用程序在带有SD卡的手机上运行。 我有一个名为test.txt
的文件位于手机存储器中的视频文件夹中,同名文件也存在于视频文件夹中的SD卡上。
在这种情况下,当您调用上面的第一行代码时,您将获得两个文件,为了区分它们,系统提供了FolderRelativeId,因此相同名称的文件可以存在于一个“位置”中。 如果您查看每个文件夹的完整路径,其中一个文件夹可能会有C:\ Viedos \ test.txt
,而第二个文件夹则为D:\ Videos \ test.txt
。
现在在第一次运行时,用户使用FilePicker选择了一个文件,并且我记住了它的路径,例如D:\ Videos \ test.txt
。 在应用程序的第二次运行中,我希望通过使用其路径(或其他方法,除了有限的FutureAccessList)访问此文件。 在过去,我通常会通过StorageFile.GetFileFromPathAsync(path);
来执行此操作 - 但似乎它在W10中开始抛出UnauthorizedAccessException异常。
StorageFolder.GetFileAsync
将返回您正在搜索的文件。如果这不是您要寻找的内容,请更具体地说明您的问题。 - HerdoC:\Videos\test.txt
,但是假设我不能假定它属于 VideosLibrary。现在 GetFileFromPathAsync() 抛出异常 - 所以我正在寻找其他方法。此外 - 我可以知道文件的所有信息,因为它已经被第一次选择了。现在在应用程序的第二次运行中,我希望能够访问该文件,而不需要再次提示用户。 - Romasz