2016-07-22 8 views
0

ファイルパスの配列を特定の宛先にコピーするnode.jsアプリケーションを実装しています。キャンセル可能性のあるnode.jsを使用したファイルのコピー

この方法は簡単です。私は、Originパスに10個のファイルパスがあり、宛先パスに1個のパスがあるとしましょう。各Fromパスはfs.copy機能を使用してONEによってコピー先にコピーされます。

しかし、ファイルアレイのサイズとサイズが大きくなる可能性があるため、ユーザーはファイルのコピー操作を取り消し、既にコピーされているものを削除する機能を実装しようとしています。

私の質問はです.fs.copyでキャンセル操作ができますか?たとえば、2GBファイルをコピーしようとしているときに、fs.copy操作を停止するにはどうすればよいですか?

私は欲しいものを達成するためにfs.copy以外の選択肢がありますか?

答えて

1

readsteamをwritestreamにパイプするだけで、コピーを停止してコピー先のファイルを削除したいときは、unpipeとunlinkを実行するといいでしょう。

var from = fs.createReadStream(fromFilename) 
    .pipe(to); 
var to = fs.createWriteStream(toFilename) 
    .on("unpipe", function() { 
    fs.unlink(toFilename); // effectively deletes the file 
    }); 

// triggered by user 
from.unpipe(); // stops the copy, triggers the delete 

これは機能しますか?

+0

私もto.destroy()を実行しました。 fs.unlink()の前に、現在のストリームを削除します。 – Benjamin

関連する問題