一、文件写入
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
![]()