0

phonegapには、アプリケーションの起動時にファイルの長さを取得する方法があり、writer.seek()をその位置に配置してファイルに追加できるように、ライターが作成されます。現在、アプリケーションが実行されると追加されますが、アプリケーションが再起動するたびにファイルが上書きされます。以下はライターのための私のコードです。ライターはグローバルに作成されます。

Android2.3.3で実行されているphonegap1.2.0を使用しています

var writer = new FileWriter("mnt/sdcard/mydocs/text.txt");


function appendFile(text) {
  try{
    writer.onwrite = appendSuccess;
    writer.onerror = appendFail;
    writer.seek(writer.length);
    writer.write(text);
    }catch(e){
      alert(e);
      }
}

function appendSuccess() {
    alert("Write successful");
  }

  function appendFail(evt) {
    alert("Failed to write to file");
    }
  }
4

1 に答える 1

2

ええ、これはバグです。PhoneGapの最新バージョンでは、修正されています。ただし、サポートしなくなりました。

new FileWriter(pathToFile);

今、あなたはする必要があります:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(FS) {
    FS.root.getFile("empty.txt", {"create":true, "exclusive":false}, 
        function(fileEntry) {
            fileEntry.createWriter(
                 function(writer) {
                    console.log("Length = " + writer.length);
                    console.log("Position = " + writer.position);
                    writer.seek(writer.length);
                    console.log("Position = " + writer.position);
                 }, fail);
        }, fail);
}, fail);

Sorry about the incorrect first answer. Apparently you can't pass a FileEntry to the FileWriter constructor you need to pass a File which is gained by calling the FileEntry.file() method.

Gotta love this convoluted W3C spec.

于 2012-05-04T14:29:11.043 に答える