nodejs 文件拷贝
2016-05-05 10:18
459 查看
小文件拷贝
我们使用NodeJS内置的
fs模块简单实现这个程序如下。
var fs = require('fs'); function copy(src, dst) { fs.writeFileSync(dst, fs.readFileSync(src)); } function main(argv) { copy(argv[0], argv[1]); } main(process.argv.slice(2));
以上程序使用
fs.readFileSync从源路径读取文件内容,并使用
fs.writeFileSync将文件内容写入目标路径。
豆知识:
process是一个全局变量,可通过process.argv获得命令行参数。由于argv[0]固定等于NodeJS执行程序的绝对路径,argv[1]固定等于主模块的绝对路径,因此第一个命令行参数从argv[2]这个位置开始。
大文件拷贝
上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。
var fs = require('fs'); function copy(src, dst) { fs.createReadStream(src).pipe(fs.createWriteStream(dst)); } function main(argv) { copy(argv[0], argv[1]); } main(process.argv.slice(2));
以上程序使用
fs.createReadStream创建了一个源文件的只读数据流,并使用
fs.createWriteStream创建了一个目标文件的只写数据流,并且用
pipe方法把两个数据流连接了起来。连接起来后发生的事情,说得抽象点的话,水顺着水管从一个桶流到了另一个桶。
相关文章推荐
- nodejs package.json解释
- Ubuntu, Mac 下 Web 开发环境搭建:node.js, golang 与 revel 配置安装
- 【U3D】Behavior Designer中的复合节点(Composites Node)
- node.js JS对象和JSON字符串之间的转换
- NodeJS的Promise的用法解析
- 在Node.js中使用Javascript Generators详解
- Nodejs学习item【入门手上】
- node.js mongoose的安装和使用
- Xcode7.3.1中SKAudioNode在Scene转换后无声的问题
- Xcode7.3.1中SKAudioNode在Scene转换后无声的问题
- Xcode7.3.1中SKAudioNode在Scene转换后无声的问题
- 19.Remove Nth Node From End of List(7.54%)
- python 和 nodejs 比较
- nvm node 版本管理器的安装
- LeetCode OJ 116. Populating Next Right Pointers in Each Node
- ActiveMQ 入门Nodejs版
- ActiveMQ + NodeJS + Stomp 极简入门
- Permission denied: user=root, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x
- Nodejs学习item 3 -- module模块系统与npm包管理
- 美团酒店Node全栈开发实践