そのため、HTML5 ファイル システム 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
解決策を探しているときに次のように表示されました(この投稿)。以前の投稿で指摘したように、truncate はファイルを開いた直後にのみ呼び出すことができます - Is truncate a better approach? 私がやっていることはより良い練習ですか?私が知らない、より迅速で簡単な方法はありますか?
ファイルへの書き込みごとに新しく開始したいと思います-それがもっともらしいおよび/または良い習慣である場合。