我想使用phonegap的FILE API(實際上是w3c文件api)遍歷SD卡中所有目錄和子目錄中的每個文件。我必須通過查看它們的性質來對這些文件執行一些操作。我不想搜索特定類型的文件,而是按順序遍歷每個文件。使用phonegap文件api遍歷SD卡中的每個文件
有人可以幫助我嗎?只需要一個基本的循環框架以及遍歷所需的必要條件將會很有幫助。
謝謝您提前。
我想使用phonegap的FILE API(實際上是w3c文件api)遍歷SD卡中所有目錄和子目錄中的每個文件。我必須通過查看它們的性質來對這些文件執行一些操作。我不想搜索特定類型的文件,而是按順序遍歷每個文件。使用phonegap文件api遍歷SD卡中的每個文件
有人可以幫助我嗎?只需要一個基本的循環框架以及遍歷所需的必要條件將會很有幫助。
謝謝您提前。
我認爲下面的代碼應該工作:
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onRequestFileSystem, fail);
function onRequestFileSystem(fileSystem) {
var directoryReader = fileSystem.root.createReader();
directoryReader.readEntries(onReadEntries, fail);
}
function onReadEntries(entries) {
var i;
for (i = 0; i < entries.length; i++) {
if (entries[i].isFile == true) {
// ...
}
if (entries[i].isDirectory == true) {
var directoryReader = entries[i].fullPath.createReader();
directoryReader.readEntries(onReadEntries, fail);
}
}
}
http://www.c-sharpcorner.com/UploadFile/e83792/filesystem-directoryentry-objects-in-phonegap/
scan : function(url,fileType,callback)
{
var fileTypeCollection = [];
var defer = $q.defer();
url.forEach(function(element, index)
{
//requestLocalFileSystemURL
log(element);
window.resolveLocalFileSystemURL(element,onRequestFileSystem, fail);
log("Ends resolve");
});
function onRequestFileSystem(fileSystem)
{
var directoryReader = fileSystem.createReader();
directoryReader.readEntries(onReadEntries,fail);
} /*onRequestFile Ends*/
function onReadEntries(entries)
{
if(entries.length==0)
{
log("Entries Length....Resolving");
defer.resolve(fileTypeCollection);
}
else
{
entries.forEach(function(element, index)
{
if (element.isDirectory === true)
{
// Recursive -- call back into this subdirectory
onRequestFileSystem(element);
}
if(element.isFile == true)
{
fileType.forEach(function(type)
{
if(element.name.indexOf(type) != -1)
{
fileTypeCollection.push(element);
}
});
} /*is File ENds*/
}); /*Entries For Each Ends*/
}
} /*OnRead Ends*/
function fail(resp)
{
log(resp);
defer.reject();
} /*Fail Ends*/
return defer.promise;
} //Scan Function Ends
嘗試。如果你願意,並使用callback.promises是有點破了,刪除承諾。如果你可以修復,那麼它確定其他使用推後文件類型
對不起。我想我忘了提及。但我需要遍歷所有子目錄內的所有文件。我將再次編輯該問題。 –
然後只是遞歸地 – shkschneider
我無法弄清楚如何爲從readEntries()讀取的每個目錄創建目錄讀取器。 –