通过Windows应用商店Javascript应用程序中的图片库递归

时间:2013-06-25 01:16:53

标签: javascript windows-8 windows-store-apps winjs

我想访问图片库中的所有图片文件,并阅读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;
    }
}

1 个答案:

答案 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);
}
相关问题