系统性学习Node.js(5)—手写 fs 核心方法( 四 )
实现原理很简单 , 改变 flags 的属性为追加状态即可
const appendFile = (path, data, options, cb) => {
cb = maybeCallback(cb || options)
options = getOptions(options, {
encoding: 'utf8',
mode: 0o666,
flag: 'a'
})
writeFile(path, data, options, cb)
}
最后一个方法 copyFile原生方法的使用方式如下:fs.copyFile('源文件.txt', '目标文件.txt', callback);
代码先不解释了 xdm , 已经快一点了 , 我得先睡了 , 先贴代码 , 有时间再补解释const copyFile = (source, target, cb) => {
cb = maybeCallback(cb)
const BUFFER_LEN = 4
const buf = Buffer.alloc(BUFFER_LEN)
let pos = 0
fs.open(target, 'r', 0o666, (err, rfd) => {
if (err) {
return cb(err)
}
fs.open(source, 'w', 0o666, (err, wfd) => {
if (err) {
return cb(err)
}
const next = () => {
fs.read(rfd, buf, 0, BUFFER_LEN, pos, (err, bytesRead) => {
if (err) {
return cb(err)
}
fs.write(wfd, buf, 0, bytesRead, pos, () => {
console.log('写入')
pos += bytesRead
if (!bytesRead) {
return
}
next()
})
})
}
next()
})
})
}
最后下一期会手写文件流(ReadStream/WriteStream) , 敬请期待 。
如果这篇文章对你有帮助 , 希望点赞鼓励一下笔者~~~
推荐阅读
- 计算机专业大一下学期,该选择学习Java还是Python
- 假期弯道超车 国美学习“神器”助孩子变身“学霸”
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- Google AI建立了一个能够分析烘焙食谱的机器学习模型
- 学习大数据是否需要学习JavaEE
- 学习“时代楷模”精神 信息科技创新助跑5G智慧港口
- 非计算机专业的本科生,想利用寒假学习Python,该怎么入手
- ?优学天下带着学习机冲刺上市,智能教育硬件有多烧钱?
- 数据分析与机器学习:侦测应用内机器人作弊关键