Windows Store Javascript应用程序中的递归图片库

Windows Store Javascript应用程序中的递归图片库,javascript,windows-8,windows-store-apps,winjs,Javascript,Windows 8,Windows Store Apps,Winjs,我想访问图片库中的所有图像文件,并通读了中提到的文章。我曾考虑过使用深度查询,但要获取图片库中的所有文件(我正在处理1TB的图片进行测试)需要很长时间 我想做的是从图片库的根开始,从根开始获取所有图片和文件夹,然后进入文件夹并递归地向内 我会从 Windows.Storage.KnownFolders.picturesLibrary.getFoldersAsync().then(function (folders) { handleFolders(folders)

我想访问图片库中的所有图像文件,并通读了中提到的文章。我曾考虑过使用深度查询,但要获取图片库中的所有文件(我正在处理1TB的图片进行测试)需要很长时间

我想做的是从图片库的根开始,从根开始获取所有图片和文件夹,然后进入文件夹并递归地向内

我会从

    Windows.Storage.KnownFolders.picturesLibrary.getFoldersAsync().then(function (folders)
    {
        handleFolders(folders);
    });
me handle folders函数看起来是这样的,尽管我知道GetFileAsync或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;
    }
}
功能手柄文件夹(文件夹)
{
如果(folders.size>0)
{
Windows.Storage.KnownFolders.picturesLibrary.GetFileAsync(文件夹)。然后(函数(文件)
{
手文件(档案);
对于(变量i=0;i
请注意,picturesLibrary只是StorageFolder的一个著名实例

类似这样的东西会让你更接近(根据你是寻找深度优先还是广度优先的列表,可能需要进行调整):

handleFolders([Windows.Storage.KnownFolders.picturesLibrary]);
功能手柄文件夹(文件夹){
对于(var i=0;i
这正是我想要的,非常感谢!
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);
}