2011-07-29 75 views
3

嘗試使用PhoneGap的0.9.6的文件存儲。代碼工作正常,而我正在寫一個文件,但當我試圖追加到文件(使用seek,truncate等)時不起作用。PhoneGap的FileWriter的追加問題

有在0.9.5版本,這似乎是固定的錯誤。當我打電話writer.seek

代碼只是終止。截斷後的警報(或者如果我刪除截斷搜索)根本沒有被調用。

我應該設置一個附加標誌的地方?該文件說,但沒有給出一個例子,我應該在哪裏設置追加標誌。代碼如下

function gotFS(fileSystem) { 
     fileSystem.root.getFile("test.txt", {"create":true, 
      "exclusive":false}, gotFileEntry, fail); 
    } 

    function gotFileEntry(fileEntry) { 
     fileEntry.createWriter(gotFileWriter, fail); 
    } 

    function gotFileWriter(writer) { 
     writer.onwrite = function(evt) { 
      console.log("write success"); 
     }; 

     writer.write("some sample text"); 
     // contents of file now 'some sample text' 
     writer.truncate(11); 
     alert('truncated'); 
     // contents of file now 'some sample' 
     writer.seek(writer.length); //writer.seek(4) does not work either 

     // contents of file still 'some sample' but file pointer is after the 'e' in 'some' 
     writer.write(" different text"); 
     // contents of file now 'some different text' 
     alert('success with diff text'); 
    } 

任何幫助,將不勝感激。

回答

1

我找到了一個解決方法到:

 function gotFileWriter(writer) { 
      writer.onwrite = function(evt) { 
       console.log("write success"); 
      }; 

      writer.write("some sample text"); 
      // contents of file now 'some sample text' 
      writer.abort(); 
      writer.truncate(11); 
      // contents of file now 'some sample' 
      writer.abort(); 
      writer.seek(writer.length); //writer.seek(4) does not work either 

      // contents of file still 'some sample' but file pointer is after the 'e' in 'some' 
      writer.write(" different text"); 
     } 
+0

如果我想在一個循環中運行它,所以它只能打印我的第一線和每一個應用程序重新開張,其追加一行到it.http://stackoverflow.com/questions/16192825/failed-to-寫10條線到一個文件,使用循環功能於JavaScript的PhoneGap的 – user366584

+0

我建議以下辦法(利用該事件處理的):http://stackoverflow.com/a/23836103/925861 – Stradivari

0

的文件處理是asynchron。您不能簡單地逐步執行文件操作。在進行下一步之前,您必須等待覆蓋事件。 writer.abort()可能會修復該錯誤。但是你不能確定存儲的是什麼。