我刚刚开始发现 Windows StoreApps(这就是微软所说的),并且我正在关注有关使用FolderPicker的示例代码。
我想遍历文件夹并读取所有子文件夹和文件。
我看过两个我认为是我需要的功能,但在尝试了几个小时后我无法正确完成。
在上面的链接中,这行说:
WinJS.log && WinJS.log("Picked folder: " + folder.name, "sample", "status");
我试图通过以下方式深入挖掘文件夹:
folder.getFoldersAsync().then(function (folderItem) {
document.getElementById('musicFolder').innerHTML += folderItem.length + " folders)<br/>";
folderItem.forEach(function (x) {
document.getElementById('musicFolder').innerHTML += "--" + x.name + "<br/>";
x.getFilesAsync().then(function (items) {
document.getElementById('musicFolder').innerHTML += items.length + " files"+"<br>";
});
});
});
更新:
我一直在努力,但在迭代文件夹和子文件夹时无法组织这些东西。
@Damir 的代码没有挖掘最深的文件夹。我们需要一个递归函数。我可以想出以下功能,但正如我所说的结果没有组织
function scanFolder(folder) {
var isInc = false;
folder.getFoldersAsync().then(function (folderItem) {
if (folderItem.length > 0) {
folderItem.forEach(function (x) {
if (!isInc) {
isInc = true;
hyphen += "-";
}
document.getElementById('musicFolder').innerHTML += hyphen + x.name + "</br>";
x.getFilesAsync().then(function (items) {
items.forEach(function (item) {
allTracks.push({
name: item.name,
path: item.path
});
document.getElementById('musicFolder').innerHTML += hyphen +"-"+ item.name + "</br>";
});
}).done(function () {
scanFolder(x);
});
});
}
});
}