为什么getFile()没有创建任何文件,即使我已经将create标志设置为true

Why isn't getFile() creating any files even though i have set the create flag on true?

本文关键字:create 标志 true 设置 getFile 创建 文件 任何 为什么      更新时间:2023-09-26

我正试图在文件中写入一些数据并将其保存在移动设备的内部存储器上。我在一个cordova项目,其中安装了cordova-plugin-file。一切似乎都工作没有错误,但没有文件被创建,所以没有数据被保存…为什么getFile()不创建任何文件,即使我已经设置了创建标志为真?

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail);
function success(fileSystem) {
    window.rootFS = fileSystem.root;
    window.rootFS.getFile("TestFile.txt", { create:true }, onSuccess, onFail); 
    function onSuccess() {
        //write something on the file 
    }
    function onFail(error) {
        //show error
    }
function fail(error) {
    alert("Failed to retrieve file: " + error.code);
}

我找到了一个解决方案:使用窗口。resolveLocalFileSystemURL代替window.requestFileSystem。然而,我只能使用cordova.file.externalDataDirectory访问内部sd卡。只是cordova.file.dataDirectory给了我一个不存在的路径文件:///data/data/…下面的代码可以在Android上运行。

window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dir) {
    console.log("got main dir",dir);
    dir.getFile("log.txt", {create:true}, function(file) {
        console.log("got the file", file);
        logOb = file;
        writeLog("App started");
    });
});