• Registrati
Benvenuto su codeinvaders.net la community italiana dedicata agli sviluppatori!
Puoi partecipare alle discussioni anche attraverso facebook, twitter e google+.
JS Day
  • google plus
  • facebook
  • twitter
Codeinvaders.net, domande e risposte per sviluppatori!
Partecipa a questa community rispettando tutti i suoi membri che, per il puro piacere di condividere, forniscono risposte e suggerimenti.
Classifica migliori utenti del mese 05/2017
  1. 4240 Punti

  2. 3980 Punti

  3. 3480 Punti

  4. Luca Rainone

    2400 Punti

I premi del mese
Posizione 1: Buono Amazon da 10 euro
Posizione 2: Sconto 40% su un libro O'Reilly

Leggere i contenuti del file system

Vorrei leggere completamente i contenuti del file system del dispositivo per fare una sorta di tree ma non riesco in quanto le chiamate alle Files API di PhoneGap sono asincrone ed inoltre chiamate in sequenza si annullano l'un l'altra.

quesito posto 20 Aprile 2013 in phonegap da riamedia (510 punti)
   

1 Risposta

+1 voto

Non e' che si annullano l'un l'altra, il fatto e' che un reader puo' leggere una cartella/file alla volta. Se proprio vuoi farlo ricorsivo allora devi

  1. Creare un reader per la root directory
  2. Accedere alle directories/files in esse contenute con il metodo readEntries
  3. Definire nel success handler del metodo un ciclo di for con il quale ti memorizzi i dati per te importanti (path, name e se e' una directory) e delegare ad un'altra funzione il parsing

Questa altra funzione puo' contenere un altro ciclo di for nel quale poi richiami ricorsivamente la funzione stessa (variando l'indice dal quale iniziare l'esplorazione) e l'handler per la lettura del singolo file

function parseQueuedDirs(start){

        for(var i = start, entry; entry = app.queuedDir[i]; i++){

            if(entry.children){

                entry.reader.readEntries(function (entries) {

                    for (var j = 0, fs; fs = entries[j]; j++) {

                        if(fs.isDirectory){

                            var reader = fs.createReader();
                            reader.readEntries(arguments.callee, app.onFileSysError);

                            return;

                        }else{

                            entry.children.push(app.parseEntries(fs));

                        }

                    }

                    app.parseQueuedDirs(i + 1);

                }, app.onFileSysError);
                return;

            }

        }

        console.log('eureka!');
        this.printDir(this.queuedDir);

    }

Sto ipotizzando di avere le entries memorizzate in un array con una struttura dati del tipo

 var obj = {reader: null, children: null};
risposta inviata 24 Aprile 2013 da giorgio.natili (2,660 punti)
Puoi partecipare alle discussioni anche attraverso facebook e twitter.
...