2013-12-19 7 views
2

Привет, я в настоящее время пытаюсь создать приложение галереи с помощью сборки phonegap, но я не могу читать файлы из локального хранилища. Я пользуюсь этой функцией:Список файлов в каталоге по сборке phonegap

function listDir(directoryEntry){ 

var directoryReader = directoryEntry.createReader(); 

directoryReader.readEntries(function(entries){ // success get files and folders 
    for(var i=0; i<entries.length; ++i){ 
     alert(entries[i].name) // this is just for checking purposes, no matter what i  put here it wont fire 
    } 
}, function(error){ // error get files and folders 
    alert(error.code); 
}); 
} 

    function getFileSystem(){ 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ // success get file system 
    var sdcard = fileSystem.root; 
    sdcard.getDirectory('dcim',{create:false}, function(dirEntry){ 
     listDir(dirEntry); 
    }, function(error){ 
     alert(error.code); 
    }) 
    }, function(evt){ // error get file system 
     console.log(evt.target.error.code); 
    }); 
    } 


    getFileSystem(); 

Функция listDir даже не срабатывает (функция ошибки тоже не будет). Я попытался добавить слушателя OnDeviceReady для вызова функции getFileSystem(), но он тоже не будет работать, плюс я попытался использовать способы доступа, даже используя официальные документы для телефонных разговоров, но может использовать t read my directory. Anyone know how to do this (i m, использующий в настоящий момент android)? Заранее спасибо.

+0

Никто не знает ответа ?? – sagits

+0

Вы пытались просто перечислить файлы из 'fileSystem.root'? Хорошо делать простые вещи в первую очередь и заставлять тех, кто работает, переходить к более продвинутым вещам. – whodeee

+0

- это может быть полезно удалить «function (fileSystem)» из 'window.requestFileSystem' и вызвать это как отдельную функцию. – whodeee

ответ

2

Вам нужно помнить, что кордова api является асинхронной.

Этот код зачитать список файлов в моем приложении внешнего каталога хранения:

function getFilesList(callback) { 
     console.log('getFilesList'); 
     var fileList = []; 

     function onDirResolved(dir) { 
      var reader =dir.createReader(); 
      reader.readEntries(function(entries) { 
       console.log('readEntries'); 
       for (var i=0; i<entries.length; i++) { 
        if (entries[i].name.indexOf(".fototoon") != -1) { 
         fileList.push(entries[i].fullPath); 
        }; 
       }; 
       console.log('fileList ' + fileList); 
       callback(fileList); 
      }, errorHandler); 
     }; 

     function onFsResolved(fs) { 
      window.resolveLocalFileSystemURL(
       cordova.file.externalApplicationStorageDirectory, 
       onDirResolved, errorHandler); 
     }; 

     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
      onFsResolved, errorHandler); 

    }; 

Функция обратного вызова будет получать список файлов читать.

Смежные вопросы