列出phonegap构建目录中的文件

时间:2013-12-19 13:00:17

标签: android file cordova

您好我正在尝试使用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()函数,但它也不会工作,加上我尝试了很多方法,甚至使用官方的phonegap文档,但它可以t read my directory. Anyone know how to do this (i目前正在使用android )?提前谢谢。

1 个答案:

答案 0 :(得分:2)

你需要记住cordova 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);

    };

回调函数将接收读取的文件列表。