6

Ich folgte diesem Beispiel:Wie überschreiben Sie eine Datei in der Chrome App?

chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) { 
    chrome.fileSystem.getWritableEntry(entry, function(entry) { 
     entry.getFile('file1.txt', {create:true}, function(entry) { 
      entry.createWriter(function(writer) { 
       writer.write(new Blob(['Lorem'], {type: 'text/plain'})); 
      }); 
     }); 
     entry.getFile('file2.txt', {create:true}, function(entry) { 
      entry.createWriter(function(writer) { 
       writer.write(new Blob(['Ipsum'], {type: 'text/plain'})); 
      }); 
     }); 
    }); 
}); 

eine vorhandene Datei file1.txt und file2.txt zu überschreiben.

Aber ich fand ein Problem: Wenn die Dateien nicht leer sind, wird ihr Inhalt nicht vollständig überschrieben, nur der Anfangsteil wird überschrieben.

Muss ich die Dateien zuerst entfernen? Oder vermisse ich etwas?

Antwort

3

Es sieht aus wie write überschreibt nur den Inhalt der Datei unter der angegebenen position, so dass Sie richtig sind, wenn Sie den Text der Datei vollständig ersetzen möchten, müssen Sie entweder zuerst die Dateien entfernen oder sie abschneiden .

Dieser Code funktionierte für mich, indem die Datei an der Position des Schreibers abgeschnitten, nachdem der Schreibvorgang abgeschlossen ist.

chrome.fileSystem.chooseEntry({type:'openDirectory'}, function(entry) { 
    chrome.fileSystem.getWritableEntry(entry, function(entry) { 
     entry.getFile('file1.txt', {create:true}, function(entry) { 
      entry.createWriter(function(writer) { 
       writer.onwriteend = function(e) { 
        e.currentTarget.truncate(e.currentTarget.position); 
       }; 
       writer.write(new Blob(['Lorem'], {type: 'text/plain'})); 
      }); 
     }); 
     entry.getFile('file2.txt', {create:true}, function(entry) { 
      entry.createWriter(function(writer) { 
       writer.onwriteend = function(e) { 
        e.currentTarget.truncate(e.currentTarget.position); 
       }; 
       writer.write(new Blob(['Ipsum'], {type: 'text/plain'})); 
      }); 
     }); 
    }); 
}); 
+4

Für mich die truncate Funktion ausgelöst onwriteend Ereignis, was zu einer Endlosschleife. Jedoch [diese Lösung] (http://stackoverflow.com/questions/19426698/overwrite-a-file-with-html5-filewriter) arbeitete für mich. – user495285

Verwandte Themen