首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用phonegap文件api遍历SD卡中的每个文件

使用phonegap文件api遍历SD卡中的每个文件
EN

Stack Overflow用户
提问于 2012-10-13 04:27:45
回答 2查看 1.9K关注 0票数 3

我想使用phonegap的文件API (实际上是w3c文件api )遍历SD卡中所有目录和子目录中的每个文件。通过查看这些文件的性质,我必须对它们执行一组特定的操作。我不想搜索特定类型的文件,而是按顺序遍历每个文件。

有没有人能帮我一下?只需一个具有遍历所需要求的基本循环框架就会有很大帮助。

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-02 20:05:12

我认为下面的代码应该可以工作:

代码语言:javascript
运行
复制
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/

票数 3
EN

Stack Overflow用户

发布于 2016-08-10 06:05:05

代码语言:javascript
运行
复制
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是一种破坏。如果你能修复,那就没问题了,否则在推送FileType后使用回调

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12866619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档