2011-07-29 2 views
3

Tentative d'utilisation du stockage de fichiers phonegap 0.9.6. Le code fonctionne bien pendant que j'écris un fichier mais ne fonctionne pas lorsque j'essaie d'ajouter au fichier (en utilisant seek, tronque etc.).phonegap filewriter append numéro

Il y avait un bogue dans la version 0.9.5 qui semble être corrigé.

Le code se termine juste lorsque j'appelle writer.seek. L'alerte après tronquer (ou si je supprime la tronquer la recherche) n'est pas appelée du tout.

Dois-je définir un indicateur append quelque part? Le doc dit cela mais ne donne pas d'exemple quant à l'endroit où je devrais mettre le drapeau append. Le code est le suivant

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'); 
    } 

Toute aide serait appréciée.

Répondre

1

J'ai trouvé une solution à ce:

 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

Si j'essaie de l'exécuter en boucle, il ne m'imprime qu'en première ligne et à chaque relance de l'application, il y ajoute une ligne.http: //stackoverflow.com/questions/16192825/failed-to- write-10-lines-to-a-file-using-loop-in-javascript-phonegap – user366584

+0

Je recommanderais l'approche suivante (en utilisant les eventhandlers): http://stackoverflow.com/a/23836103/925861 – Stradivari

0

La gestion des fichiers est asynchron. Vous ne pouvez pas simplement faire les opérations de fichier étape par étape. Vous devez attendre les événements onwrite, avant de passer à l'étape suivante. writer.abort() peut corriger l'erreur. Mais vous ne pouvez pas être sûr de ce qui est stocké.

Questions connexes