2016-10-12 14 views
0

createReadStreamを使用してビッグテキストファイルの読み込みを実装しました。私の実装では、エラー処理をテストしたいと思っていました。NodeJS StreamReaderの読み込みevenファイルが削除されました

私はプロセスを開始してファイル名を変更しましたが、ファイル全体が読み込まれ、すべてのデータがコンソールに出力されました。 2回目の試行で同じことをしましたが、今回はファイルを削除し、結果は同じでしたが、ファイル全体が読み込まれ、コンソールに表示されました。

つまり、私はcreateReadStreamを使ってファイルを読んでいます。ファイルの名前を変更しても読み込みを開始しても、最後まで読み込みます。ここで

は、サンプル実装で、

const fs = require('fs'); 
const readableStream = fs.createReadStream('mySampleTextFile.txt'); 

readableStream.on('data', (chunk) => console.log(chunk)); 
readableStream.on('end',() => console.log('Read till end !')); 

mySampleTextFile.txtは、各ラインの数だけで600Kの行が含まれている、と私は最後の数は、元のファイルとまったく同じになるようにログインし検証しました。
実行を終了する前にファイルを削除しています。私は2つの端末を開いていて、1つは実行を開始し、2番目はfire delete/renameコマンドを実行します。
私も恒久的に削除を試みたが、ゴミ箱ではなく直接削除を意味する。

ストリームのようなものがありますか?これを手伝ってください、それは何も壊れていませんが、なぜそれが壊れていないのですか?

答えて

1

少なくともUnixタイプのOSでは、ファイルを開いているときにファイルを削除すると、そのファイルを開いたプロセスは引き続きファイルから読み込むことができます。

lsまたはファイルブラウザを実行してもファイルが表示されなくなるため、そのファイルが削除されるだけですが、それ以上のプロセスがなくなるまでディスクの空き容量は「使用可能」とマークされませんそれらはファイルを参照している(すなわち、それを開いている)。

あなたはそれを削除するのではなく、ファイルを切り捨てている試みることができる:

私は、Macを実行しています
cp /dev/null mySampleTextFile.txt 
+0

は、UNIXベースの意味なので、このような理由でなければなりません。試して知ってもらいます。迅速な答えをありがとう。 –

+0

私は試してみましたが、エラーを出さずに読書を終了します。ファイルを切り捨てているので、ストリームがファイルからデータをそれ以上取得していないことを意味します。つまり、終了です。 –

+0

@ErrHunterファイルポインタを壊してエラーをスローすることを期待していました:-( – robertklep

関連する問題