我想使用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()读取的每个目录创建目录读取器。 –