2015-10-29 29 views
19

Node.jsを使って過去の行の前の行をtxtファイルに出力するシンプルなログシステムを作成したいが、 Node.jsは動作します。誰か説明できますか?Node.js .txtファイルに行を書き込む

+0

だから、あなたがの中央に行を挿入したいファイルが大きすぎる場合、これは推奨されませんので、

fs.createWriteStream(yourArray); 

のようなあなたのファイルを書き込むステップテキストファイル、そうですか?最後に文字列を追加する方がはるかに簡単です。 –

+0

はい、どうしたら最後に文字列を追加できますか? – Meterion

+0

[Node内のファイルに追加する方法]の複製がありますか?(http://stackoverflow.com/questions/3459476/how-to-append-to-a-file-in-node) –

答えて

48

テキストファイルの途中にデータを挿入するのは簡単な作業ではありません。可能であれば、ファイルの末尾に追加する必要があります。

データにいくつかのテキストファイルを追加する最も簡単な方法は、fs moduleからビルドでfs.appendFile(filename, data[, options], callback) functionを使用することです:

var fs = require('fs') 
fs.appendFile('log.txt', 'new data', function (err) { 
    if (err) { 
    // append failed 
    } else { 
    // done 
    } 
}) 

をしかし、あなたは、ファイルを複数回ログインするためにデータを書き込みたい場合は、それは最高になります代わりにfs.createWriteStream(path[, options]) functionを使用します。

var fs = require('fs') 
var logger = fs.createWriteStream('log.txt', { 
    flags: 'a' // 'a' means appending (old data will be preserved) 
}) 

logger.write('some data') // append string to your file 
logger.write('more data') // again 
logger.write('and more') // again 

calのノードは、ファイルにアプリケーションが閉じられますまで、あなたが、.writeを呼び出しますたびに新しいデータを追加続ける、または手動でストリームを閉じますまで玲.end:ログ・システムを実装する場合、私はBunyanパッケージを見てみることをお勧めしたい

fs.appendFile('server.log', 'string to append', function (err) { 
    if (err) return console.log(err); 
    console.log('Appended!'); 
}); 
+0

保存する必要がありますファイル ?私がfs.appendFileを使用しても、ファイルはまだ空ですか? – Meterion

+0

'appendFile'は、テキストファイルを開き、それに新しいデータを追加し、後でそれを保存します。だから、それを自分で保存する必要はありません。あなたのファイルは空です。 'appendFile'コールバックで' err'をチェックしてみてください。 –

+0

ありがとうございました。 –

1

単にこのようfsモジュールと何かを使用しています。

1

ステップ1

あなたは小さなファイル アレイ

にメモリ

ステップ2

変換ファイルデータ列へのすべてのファイルデータを読むをお持ちの場合ステップ3

テキスト

yourArray.splice(index,0,"new added test"); 

ステップ5

を挿入場所を持っていたら、あなたはテキスト

ステップ4

を挿入したい場所を見つけるために、配列を検索

あなたの配列を文字列に変換します

yourArray.join(""); 

は6

関連する問題