Phonegap Android创建文件(如果不存在)并写入

时间:2014-03-22 07:15:39

标签: android cordova filesystems

上午,

我使用以下命令在本地文件系统上创建文件。如果文件尚不存在,则会创建一个文件。

function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

}

function gotFS(fileSystem) {
        fileSystem.root.getFile("test.txt", {create: true}, gotFileEntry, fail);
    }

    function gotFileEntry(fileEntry) {
        fileEntry.createWriter(gotFileWriter, fail);
    }

    function gotFileWriter(writer) {
        writer.onwrite = function(evt) {
            alert("write success");
        };
        writer.write("We are testing")

    }

    function fail(error) {
        if(error.code == 1){
            alert('not found');
        }
        alert(error.code);
    }

但是,如果文件尚不存在,我只需要写入该文件。 我尝试使用

function gotFS(fileSystem) {
            fileSystem.root.getFile("test.txt", null, gotFileEntry, fail);
        }

function gotFS2(fileSystem) {
alert('trying again');
            fileSystem.root.getFile("test.txt", {create:true}, gotFileEntry, fail);
        }

function fail(error) {

            if(error.code == 1){
                alert('not found');
                gotFS2(fileSystem);
            }
            alert(error.code);
        }

然后如果error.code == 1则调用gotFS2 但这没有做任何事情 - 它甚至没有在不存在时创建文件。

似乎没有调用gotFS2,但函数中的alert('not found');失败(错误)。

做我想做的最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

似乎问题在于你的保存文件系统变量(在#34; gotFS"的本地范围内),所以我的建议是:

var savedFS;

function gotFS(fileSystem) {
    savedFS = fileSystem;
    fileSystem.root.getFile("test.txt", null, gotFileEntry, fail);
}

function gotFS2(fileSystem) {
    alert('trying again');
    fileSystem.root.getFile("test.txt", { create: true }, gotFileEntry, function() {});
}

function fail(error) {
    if (error.code == 1) {
        alert('not found');
        gotFS2(savedFS);
    }
    alert(error.code);
}