我想访问图片库中的所有图片文件,并阅读this post中提到的文章。我考虑过使用深度查询,但是获取图片库中的所有文件需要很长时间(我正在处理1TB图片进行测试)。
我想要做的是从图片库的根目录开始,然后在root用户处获取所有图片和文件夹,然后进入文件夹并递归向内。
我会从
开始 Windows.Storage.KnownFolders.picturesLibrary.getFoldersAsync().then(function (folders)
{
handleFolders(folders);
});
我处理文件夹功能看起来像这样,虽然我知道getFilesAsync或getFoldersAsync没有重载,它将文件夹作为参数。
function handleFolders(folders)
{
if (folders.size > 0)
{
Windows.Storage.KnownFolders.picturesLibrary.getFilesAsync(folders).then(function (files)
{
handleFiles(files);
for(var i = 0; i < folders.size; i++)
{
Windows.Storage.KnownFolders.picturesLibrary.getFoldersAsync(folders).then(function (recFolders)
{
handleFolders(recFolders);
});
}
});
}
else
{
var x = folders;
}
}
答案 0 :(得分:1)
请注意,picturesLibrary只是一个众所周知的StorageFolder实例。
这样的事情可以让你更接近(可能需要调整,具体取决于你是在寻找深度优先还是广度首次上市):
handleFolders([ Windows.Storage.KnownFolders.picturesLibrary ]);
function handleFolders(folders) {
for (var i = 0; i < folders.length; i++) {
console.log("Folder: " + folders[i].name);
folders[i].getFilesAsync().then(function (files) {
handleFiles(files);
});
folders[i].getFoldersAsync().then(function(folders)
{
handleFolders(folders);
});
}
}
function handleFiles(files) {
for (var i = 0; i < files.length; i++)
console.log("File: " + files[i].name);
}