输出“cat”到Node.js中的一个文件

我试图用Node.js做一些简单的事情(在一个更大的上下文中)。 基本上这样做:

cat file1.avi file2.avi file3.avi > final_file.avi 

我试过这个:

 var spawn = require("child_process").spawn, cat = spawn("cat", ["file1.avi","file2.avi", "file3.avi", ">", "final_file.avi"]); cat.stdout.on("data", function(data) { console.log(data); }); cat.stderr.on("data", function(data) { console.log(data); }); 

但它不起作用,它只是输出'猫'的标准输出,而不是'final_file'。 [编辑]重要的是要注意他们是AVI文件

任何想法如何使其工作?

>redirect符号是你的shell的一个特性,而不是操作系统或cat 。 当你用cat调用cat作为参数时,它被作为parameter passing如果你想保存这些文件的内容,在on(“data”)函数内部

 var spawn = require('child_process').spawn; cat = spawn('cat',["file1.avi", "file2.avi"]); cat.stdout.on("data", function (data) { console.log(data); }); 

猫只是input标准input到标准输出。 Node.js文件系统模块可以做同样的事情。

 var fs = require('fs'); var inputs = ["file1.avi","file2.avi", "file3.avi"]; var output = fs.createWriteStream("final_file.avi"); function pipe () { var input = fs.createReadStream( inputs.shift() ); output.pipe(input); input.on('end', function () { if(inputs.length) { pipe(); } }); } 

(另)