0

在 phonegap 中,有一种方法可以在应用程序启动并创建编写器时获取文件的长度,以便您可以将 writer.seek() 写入该位置并附加到文件中。它目前在应用程序运行时追加,但每次应用程序重新启动时都会覆盖文件。下面是我给作者的代码。作家是在全球范围内创建的。

我正在使用在 Android 2.3.3 上运行的 phonegap 1.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);

很抱歉第一个答案不正确。显然,您不能将FileEntry传递给FileWriter构造函数,您需要传递通过调用FileEntry.file()方法获得的File 。

一定会喜欢这个令人费解的 W3C 规范。

于 2012-05-04T14:29:11.043 回答