2016-07-22 67 views
0

我正在實施一個將文件路徑數組複製到特定目的地的node.js應用程序。使用node.js複製文件並取消可能性

該方法很簡單,假設我在Origin路徑中有10個文件路徑,並且1個路徑作爲目標路徑。所以每個From路徑將被複制到目的地ONE BY ONE使用fs.copy函數。

但是,由於文件數組在數量和大小方面可能很大,因此我試圖實現一項功能,該功能允許用戶取消複製文件的操作並刪除已被複制的文件。

我的問題是,是否可以對fs.copy進行取消操作?例如,如何在試圖複製2GB文件時停止fs.copy操作?

是/除了fs.copy之外還有其他的選擇來實現我想要的嗎?

回答

1

我想你可以將一個readteam管道寫入一個writestream,當你想停止複製並刪除目標文件時,unipe和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