1
我剛開始發現Windows StoreApps(這就是微軟稱之爲的),我正在關注使用FolderPicker的示例代碼here。我如何遞歸閱讀使用JavaScript的文件和文件夾
我想遍歷文件夾並閱讀所有的子文件夾和文件。
我看過的功能有兩種,我認爲是我需要的,但在嘗試幾個小時後我無法正確完成。
在上面的鏈接,它說行:
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>";
});
});
});
UPDATE:
我有一直在掙扎,但無法在迭代文件夾和子文件夾時獲得組織的東西。
@達米爾的代碼不挖最深的文件夾。我們需要一個遞歸函數。我可以拿出以下功能,但正如我所說的結果沒有組織
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);
});
});
}
});
}
再次@達米爾阿爾, 感謝您讓我走上正軌。 請查看我更新的問題。 –
@JeyKeu對不起。我沒有注意到你正在尋找子文件夾的遞歸掃描。我玩了一些,但是我對Javascript或者承諾鏈接不足以使其工作還不夠了解。如果你提出一個新的問題,最好是這樣,因爲這個問題可能不會被一個被接受的答案所吸引。 –
@JeyKeu我無意中遇到了WinRT中的一個方法,它爲您執行遞歸掃描,因此您不需要在代碼中再次使用遞歸。看我上面的例子。 –