0

ワークライトで Cordova ファイル API を使用してファイルを作成しました。書き込みイベントが完了したら、ファイルを読みたいと思います。writer.onwriteend イベントに関数呼び出し readAsText() を書いてみました。しかし、ファイルは読み取られていません。「排他的」オプションはこれと関係がありますか? read() まではすべて正常に動作し、エラーもメッセージも表示されませんが、ファイルを読み取っていないと思います。しかし、reader.onloadend イベントでエラーが発生すると、次のようになります。

read error {"type":"error","bubbles":false,"cancelBubble":false,"cancelable":false,"lengthComputable":false,"loaded":0,"total":0,"target" :{"fileName":"file://C:\Users\IBM_ADMIN\cordova\filesystem\persistent\RQM\ExecutionResult.xml","re​​adyState":2,"result":null,"error":{"コード":1},"onloadstart":null,"onprogress":null,"onload":null,"onabort":null}}

これが私のコードです:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
        onFileSystemSuccess, fail);


function onFileSystemSuccess(fileSystem) {
alert("Created File system ");
fileSystem.root.getFile("ExecutionResult.xml", {
    create : true,
    exclusive : true
}, gotFileEntry, fail);
function gotFileEntry(fileEntry) {
fileEntry.createWriter(gotFileWriter, fail);
}
function gotFileWriter(writer) {
writer.write(JsonData);

writer.onwriteend = function(evt) {
    readAfterWriting();
};
}
function readAfterWriting(){
    fileSystem.root.getFile("ExecutionResult.xml", {
        create : false,
        exclusive : false
    }, gotFile, fail);

};
} 
function gotFile(file) {
readAsText(file);
}
function readAsText(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
    console.log("Read as text");
    console.log(evt.target.result);
};
reader.readAsText(file);
}

これは、エラーが発生しているコードです。ファイル名は 22 として示されています。ここに示されている行があります

window.addEventListener("message", function(e){
    _consoleLog("*****PG BC***** " + e.domain + " said: " + e.data);
    var r = e.data;

    // If a result was returned
    _consoleLog("typeof result=" + (typeof r) + " r=" + r);
    if (r.length > 0) {
        // if ((typeof r == "string") && (r.length > 0)) {
        _consoleLog("Result from exec=<" + dumpObj(r, '', ' ', 2) + ">");
        eval("var v=" + r + ";");
        var callbackId = v.id;
        var cast = v.cast;
        // var temp = "+cast+"("+this.getJSONString() + ");\n"
        if (cast) {
            // _consoleLog("CAST==="+"var
            // temp="+cast+"("+JSON.stringify(v.message)+");\n");
            // eval("var temp="+cast+"("+JSON.stringify(v.message)+");\n");
            // _consoleLog("***** CAST:"+" var temp="+cast+"("+r+");");
            eval("var temp=" + cast + "(" + r + ");");
            v = temp;
        }
        // _consoleLog("After CAST="+dumpObj(v, '', ' ', 3));

        // If status is OK, then return value back to caller
        if (v.status === Cordova.callbackStatus.OK) {

            // If there is a success callback, then call it now with
            // returned value
            if ((typeof(Cordova.callbacks[callbackId]) != 'undefined') 
                && (Cordova.callbacks[callbackId] != null)) {
                if (Cordova.callbacks[callbackId].success) {
                    try {
                        Cordova.callbacks[callbackId].success(v.message);
                    } catch (e) {
                        _consoleLog("Error in success callback: " + callbackId + " = " + e);
                    }

                    // Clear callback if not expecting any more results
                    if (!v.keepCallback) {
                        delete Cordova.callbacks[callbackId];
                    }
                }
            }
            return v.message;
        }
4

1 に答える 1