标签:新建 get argv 数据流 命令行参数 程序 读数 logs file
var fs = require(‘fs‘); function copy(filename,src) { fs.writeFileSync(filename, fs.readFileSync(src)); //filename如果不存在,则会在路径上新建文件 } function main(argv) { copy(argv[0], argv[1]); //argv[0]为要拷贝的文件名,argv[1]为拷贝数据的来源 } fs.stat(process.argv.slice(2)[1], function (err, stats) { //检验是否为文件 if(stats.isFile()){ main(process.argv.slice(2)); }else{ console.log(‘invalid file‘); } });
以上程序通过stats类获取文件信息,isFile判断是否为文件,再通过fs.writeFileSync,fs.readFileSync同步写入或读取文件。
process.argv获得命令行参数。然而argv[0],argv[1]为NodeJS执行程序的绝对路径和运行模块的绝对路径,所以argv[2]开始才是输入的参数,可以通过slice()截取参数。
function copy(filename,src) { fs.createReadStream(src).pipe(fs.createWriteStream(filename)); }
fs.createReadStream创建了一个只读数据流,fs.createWriteStream创建了一个只写数据流,pipe()将两个数据流连接在一起进行传输。
通过数据流读取文件时,会将大文件分多次进行读取,即使文件没读取完也可以对读取的数据进行操作,写入文件也是如此,用这种方式来拷贝数据是十分高效的。
文件操作相关API:http://nodejs.cn/api/fs.html
标签:新建 get argv 数据流 命令行参数 程序 读数 logs file
原文地址:http://www.cnblogs.com/teletubbies/p/7245291.html