1

所以我遇到了一个问题,我通过 HTML5 File-system api 将内容写入文件。当新内容比以前的内容短时会出现此问题,旧内容按预期覆盖,但旧内容的尾部仍保留在文件末尾。我正在编写的数据是给定 Web 应用程序的元数据,并且往往会定期更改,但不是很频繁,通常会增加大小,但有时元数据的大小会更小。

例如,文件的原始内容0000000000,新内容11123和写入文件后,内容变为1112300000

为了解决这个问题,我一直在删除文件并传递回调以在每次调用时写入新信息。(cnDAO.filesystem是请求持久内存时得到的文件系统对象,并已适当初始化)

function writeToFile(fPath,data,callback){
  rmFile(fPath,function(){
      cnDAO.fileSystem.root.getFile(fPath, {
          create: true
      }, function(fileEntry) {
          fileEntry.createWriter(function(writer) {
              writer.onwriteend = function(e) {
                  callback();
              };
              writer.onerror = function(e3) {  };
              var blob = new Blob([data]);
              writer.write(blob);
          }, errorHandler);
      }, errorHandler);
  });    
}
function rmFile(fPath,callback){
  cnDAO.fileSystem.root.getFile(fPath, {
          create: true
      }, function(fileEntry) {
          fileEntry.remove(callback);
      }, errorHandler);
}

所以,我想知道是否有更好的方法来做我正在做的事情。truncate在我寻找解决方案时出现在下面(这篇文章)。正如上一篇文章中所指出的,截断只能在打开文件后立即调用 - 截断是更好的方法吗?我在做什么是更好的做法吗?有没有我不知道的更快更简单的方法?

我想在每次写入文件时重新开始 - 如果这是合理的和/或良好的做法。

4

0 回答 0