输出“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(); } }); }
(另)