node.js 复制文件最快的方法
Subway
最快的方法
var fs = require('fs');
fs.createReadStream('test.log').pipe(fs.createWriteStream('newLog.log'));
改进使其可以接受回调
function copy(source, to, callback) {
var read = fs.createReadStream(source);
source.on('error', function (err) {
done(err);
}
var write = fs.createWriteStream(to);
write.on('error', function (err) {
done(err);
}
write.on('finish', function () {
done();
}
read.pipe(write);
function done(err) {
if (err) {
throw err;
}
callback();
}
}
继续添加 Promise,并且用 ES2015 的写法
function copy(source, to) {
return new Promise( resolve => {
let read = fs.createReadStream(source);
source.on('error', err => {
throw err;
});
let write = fs.createWriteStream(to);
write.on('error', err => {
throw err;
});
write.on('finish', ()=> {
resolve();
});
read.pipe(write);
});
}
// example
copy('a.txt', 'b.txt')
.then( () => {
console.log('copy success');
})
.catch( err => {
console.log('copy error: ', err);
});
来源:StackOverflow
相关文章
【代友招聘】【成都】Web3 教学网站 后端工程师
Hackquest.io 是我长期关注并辅佐的一家专注于 Web3 教学的网站的。他们由一群很有热情的年轻人组 […]
2024-10-192 分钟
【视频】Node.js 开发 RAR 解压缩命令行工具
拖来拖去,终于把 使用 node.js 开发命令行工具 workshop 的视频剪出来了,前几天上传到 B 站 […]
2023-01-282 分钟
node.js 里 ESM 与 CommonJS 的区别
可能大部分同学并不会直接用 node.js 开发 Web 后端程序,但是作为现代化前端,我们日常的各种开发都严 […]
2022-03-276 分钟


