代码拉取完成,页面将自动刷新
const fs = require('fs')
/**
* 因为copyFile是一次性操作;我们这里利用buffer实现文件拷贝自定义
* 01 打开 a 文件,利用 read 将数据保存到 buffer 暂存起来
* 02 打开 b 文件,利用 write 将 buffer 中数据写入到 b 文件中
*/
let buf = Buffer.alloc(10)
// 01 打开指定的文件
// fs.open('a.txt', 'r', (err, fd) => {
// // 03 开打 b 文件,用于执行数据写入操作
// fs.open('b.txt', 'w', (err, wfd) => { // 因为这里一次没有读完,再次执行就会出现多次open的情况
// // 02 从打开的文件中读取数据
// fs.read(fd, buf, 0, 10, 0, (err, readBytes, buffer) => {
// // 04 将 buffer 中的数据写入到 b.txt 当中
// fs.write(wfd, buf, 0, 10, 0, (err, written) => {
// console.log('写入成功');
// })
// })
// })
// })
// 02 数据的完全拷贝
// fs.open('a.txt', 'r', (err, fd) => {
// fs.open('b.txt', 'a+', (err, wfd) => { // 追加写入
// fs.read(fd, buf, 0, 10, 0, (err, readBytes, buffer) => {
// fs.write(wfd, buf, 0, 10, 0, (err, written) => {
// 这里因为有15个字符,还剩5个没有读完; 从第10个位置开始读
// fs.read(fd, buf, 0, 5, 10, (err, readBytes, buffer) => {
// fs.write(wfd, buf, 0, 5, 10, (err, written) => { // 从第10个位置开始写
// console.log('写入成功');
// })
// })
// })
// })
// })
// })
// 03 利用递归拷贝
const BUFFER_SIZE = buffer.length // 缓冲区长度
let readOffset = 0
fs.open('a.txt', 'r', (err, rfd) => {
fs.open('b.txt', 'w', (err, wfd) => {
function next() {
fs.read(rfd, buf, 0, BUFFER_SIZE, readOffset, (err, readBytes, buffer) => {
if (!readBytes) { // 当前读取到的字节数长度
// 如果条件成立,说明内容已经读取完毕
fs.close(rfd, () => { })
fs.close(wfd, () => { })
console.log('拷贝完成');
return
}
readOffset += readBytes
fs.write(wfd, buf, 0, readBytes, (err, written) => {
next()
})
})
}
next()
})
})
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。