node.js文件拷贝(复制)
来源:互联网 发布:淘宝网怎么登不上 编辑:程序博客网 时间:2024/06/15 23:36
http://wiki.jikexueyuan.com/project/nodejs-guide/file-copy.html
NodeJS 提供了基本的文件操作 API,但是像文件拷贝这种高级功能就没有提供,因此我们先拿文件拷贝程序练手。与 copy 命令类似,我们的程序需要能接受源文件路径与目标文件路径两个参数。
小文件拷贝
我们使用 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 方法把两个数据流连接了起来。连接起来后发生的事情,说得抽象点的话,水顺着水管从一个桶流到了另一个桶。
0 0
- node.js文件拷贝(复制)
- js中对象的拷贝(复制)
- js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
- Meteor node.js 复制(copy)文件的方法
- node.js stream流式读取与复制文件
- node.js文件的复制,创建文件夹等相关操作
- Node.js中的fs.rename();剪切、复制文件;
- node 复制文件
- Node复制文件
- node复制文件
- node复制文件
- js 深复制(深拷贝)和浅复制(浅拷贝)的区别
- node-webkit js 复制粘贴
- c/c++ 文件复制(拷贝)
- 实现目录拷贝 复制目录 复制文件
- Node.js本地文件操作之文件拷贝与目录遍历的方法
- java实现FTP远程文件移动(重命名、复制、拷贝)
- Java IO流之拷贝(复制)文件
- Qt Quick之ListView单元的上下拖动功能实现
- FFmpeg库 32位和64位
- 成员变量和属性
- HDU 5364 Distribution money 模拟
- 有个库 snbcg ,加了宽字符版,lib和dll更名成snbcgu.lib snbcgu.dll
- node.js文件拷贝(复制)
- 【VR】Leap Motion 官网文档 ToolModel (工具模型)
- ubuntu 14.04 删除ibus输入法引发的问题及解决方法
- 毛玻璃效果
- node.js中同步和异步共同使用时应额外注意
- Android中实现多线程下载的两种方式示例及浅析之二(Thread加断点续传)
- oracle新手随记9
- iBeacon技术解析:苹果对抗NFC的利器
- linux下php代码不执行、不解析问题