0

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

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

我会从

    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;
    }
}
4

1 回答 1

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);
}
于 2013-06-25T04:03:09.360 回答