просматривать каждый файл на SD-карте, используя API-интерфейс файла phonegap

Я хочу просмотреть каждый файл на SD-карте во всех каталогах и подкаталогах, используя FILE API phonegap (который на самом деле является файловым API w3c). Я должен выполнить определенный набор операций с этими файлами, глядя на их природу. Я не хочу искать определенные типы файлов, а последовательно просматривать каждый файл.

Может кто-нибудь, пожалуйста, помогите мне с этим? Просто базовая структура цикла с необходимыми требованиями для обхода была бы большим подспорьем.

Заранее спасибо.


person aayush shrestha    schedule 12.10.2012    source источник


Ответы (2)


Я думаю, что следующий код должен работать:

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/

person shkschneider    schedule 02.11.2012
comment
Извините .. Кажется, я забыл упомянуть. Но мне также нужно просмотреть все файлы во всех подкаталогах. Я снова отредактирую вопрос. - person aayush shrestha; 02.11.2012
comment
Я не мог понять, как создать directoryreader для каждого каталога, прочитанного из readEntries(). - person aayush shrestha; 02.11.2012
comment
И снова здравствуйте. Ваш код работает отлично. Но у меня другая щекотливая ситуация, и мне было интересно, не могли бы вы помочь мне с ней. Похоже, что функция обратного вызова успеха readEntries() работает в другом потоке. и поскольку он рекурсивный, я не могу определить, закончился ли весь процесс чтения или нет. - person aayush shrestha; 23.11.2012

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

попробуй это. удалите обещания, если хотите, и используйте обратный вызов. обещания не работают. если вы можете исправить, то все в порядке, иначе используйте обратный вызов после нажатия для FileType

person siddharth chandra    schedule 09.08.2016