Node.js 内置模块之 fs

一、文件写入

1-1 writeFile 异步写入

const fs = require('fs')

fs.writeFile('test01.txt', '三人行,必有我师焉。', err => {
	if (err) {
		console.log('写入失败:', err)
		return
	}
	console.log('写入成功 test01')
})

1-2 writeFileSync 同步写入

const fs = require('fs')

try {
	fs.writeFileSync('test02.txt', '子曰:三人行,必有我师焉。')
	console.log('写入成功 test02')
} catch (err) {
	console.log('写入失败:', err)
}

1-3 appendFile/appendFileSync 追加写入

const fs = require('fs')

fs.appendFile('test01.txt', '择其善者而从之,其不善者而改之。', err => {
	if (err) {
		console.log('写入失败:', err)
		return
	}
	console.log('追加写入成功 test01')
})

fs.appendFileSync('test02.txt', '勿以恶小而为之,勿以善小而不为.') // 同步追加

1-4 createWriteStream 流式写入

const fs = require('fs')

const ws = fs.createWriteStream('test03.txt')
ws.write('回首依然望见故乡月亮\r\n')
ws.write('黑夜给了我黑色的眼睛\r\n')
ws.write('我却用它去寻找光明\r\n')
ws.end()
console.log('流式写入成功test03')

1-5 文件写入场景

下载文件
安装软件
保存程序日志
编辑器保存文件
视频录制

二、文件读取

2-1 异步读取

fs.readFile('test01.txt', (err, data) => {
	if (err) {
		console.log('读取失败:', err)
		throw err
	}
	console.log('读取成功:', data.toString())
})

fs.readFile('test01.txt', 'utf-8', (err, data) => {
	if (err) {
		console.log('读取失败:', err)
		throw err
	}
	console.log('读取成功:', data.toString())
})

2-2 readFileSync 同步读取

const fs = require('fs')

let data1 = fs.readFileSync('test01.txt')
let data2 = fs.readFileSync('test02.txt', 'utf-8')

console.log('读取成功data1:', data1.toString())
console.log('读取成功data2:', data2.toString())

2-3 createReadStream 流式读取

const fs = require('fs')

let rs = fs.createReadStream('test03.txt')

rs.on('data', data => {
	console.log(data.toString())
	console.log(data.length)
})

rs.on('end', () => {
	console.log('读取完成')
})

2-4 文件读取场景

打开文件
查看图片
播放视频、音乐
查看日志
查看聊天记录
上传文件

三、文件删除

const fs = require('fs')

fs.unlink('test03.txt', err => {
	if (err) throw err
	console.log('删除成功')
})

fs.unlinkSync('test04.txt') // 同步删除

四、文件移动与重命名

const fs = require('fs')

fs.rename('test01.txt', './new/test01.txt', err => {
	if (err) throw err
	console.log('移动成功')
})

fs.renameSync('test02.txt', './new/test02_new.txt')

五、文件夹操作

5-1 mkdir 创建文件夹

const fs = require('fs')

fs.mkdir('data', {recursive: true}, err => {
	if (err) throw err
	console.log('创建成功data')
})

fs.mkdir('./3/2/1', {recursive: true}, err => {
	if (err) throw err
	console.log('递归创建成功 3/2/1')
})

fs.mkdirSync('./5/4/3/2/1', {recursive: true}) // 同步创建

5-2 readdir 读取文件夹

const fs = require('fs')

fs.readdir('new', (err, data) => {
	if (err) throw err
	console.log('读取成功:', data)
})

let dir = fs.readdirSync('./') // 同步读取
console.log(dir)

5-3 rm 删除文件夹

const fs = require('fs')

fs.rm('./data', {recursive: true}, err => {
	if (err) throw err
	console.log('删除成功data')
})

fs.rm('./3', {recursive: true}, err => {
	if (err) throw err
	console.log('递归删除成功 3')
})

fs.rmSync('./5', {'recursive': true}) // 同步删除

六、查看资源状态

const fs = require('fs')

fs.stat('data', (err, data) => {
	if(err) throw err
	console.log(data)
})

let fileInfo = fs.statSync('new/test01.txt') // 同步
console.log(fileInfo)

七、__dirname

const fs = require('fs')

// 当前文件所在目录的绝对路径
let data = fs.readFileSync(__dirname + '/test03.txt')
console.log(data.toString())

// 使用 fs 模块的时候,尽量使用 __dirname 将路径转化为绝对路径,这样可以避免相对路径产生的
Bug

posted @   长安街死肥猪  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示