https://www.bilibili.com/video/BV11t411k79h?spm_id_from=333.999.0.0
node.js的fs内置模块
引用方式:
const fs = require('fs')
注意:fs里面的方法是异步
- fs.stat:检测目标(指定路径)是文件还是目录
fs.stat('./catalogue', (err, data) => {
console.log(`属于文件:${data.isFile()}`) // 返回boolean值
console.log(`属于目录:${data.isDirectory()}`) // 返回boolean值
})
- fs.mkdir:创建目录
/*
path 创建路径
mode 目录权限(读写权限),默认777
callback 回调,传递一场参数err
*/
fs.mkdir('./css', (err) => { // 如果目录已存在 会报错
if (err) {
console.log(err)
return
}
console.log('创建成功')
})
- fs.writeFile:创建写入文件
/*
filename 文件名称
data 写入的内容(string | buffer)
options 数组对象 包含:
encoding 可选值,默认'utf-8'
mode 文件读写权限 默认438
flag 默认值'w'
callback 回调,传递一个异常参数err
*/
fs.writeFile('./catalogue/index.html', 'hello nodejs',(err) => { // 如果文件已存在 会替换旧文件
if (err) {
console.log(err)
return
}
console.log('创建写入文件成功')
})
- fs.appendFile:追加文件内容
fs.appendFile('./css/base.css', 'body{color:red}',(err) => {
if (err) {
console.log(err)
return
}
console.log('appendFile成功')
})
- fs.resdFile:读取文件
fs.appendFile('./html/index.html',(err, data) => {
if (err) {
console.log(err)
return
}
console.log(data)
console.log(data.toString()) // 把buffer转化为string类型
})
- fs.readdir:读取目录
fs.appendFile('./html',(err, data) => {
if (err) {
console.log(err)
return
}
console.log(data)
})
- fs.rename 重命名/移动文件
fs.rename('./css/aaa.css','./css/index.css',(err) => { // 旧路径、新路径及名称、回调
if (err) {
console.log(err)
return
}
console.log('重命名成功')
})
- fs.rmdir:删除目录
fs.rename('./css',(err) => { // 目录存在文件时不能删除目录 需要先删除里面的文件
if (err) {
console.log(err)
return
}
console.log('删除目录成功')
})
- fs.unlink:删除文件
fs.unlink('./css/aaa.css',(err) => {
if (err) {
console.log(err)
return
}
console.log('删除文件成功')
})
- fs.createReadStream:从文件流中读取文件
const readStream = fs.createReadStream('./css/test.txt') // 创建读取流
let count = 0
let str = ''
readStream.on('data', (data) => { // 监听读取状态(数据流是一点一点读取的)
str += data
count++
})
readStream.on('end', (data) => { // 监听读取完成
console.log(str)
console.log(count)
})
readStream.on('error', (data) => { // 监听错误信息
console.log(error)
})
- fs.createWriteStream:写入文件
const fs = required('fs');
let str = ''
for(let i = 0;i<500;i++0) {
str += '我是从数据库获取的数据,我想要保存起来\n'
}
const writeStream = fs.createWriteStream('./data/test.txt')
writeStream.write(str)
// 标记写入完成
writeStream.end()
writeStream.on('finish', ()=>{ // writeStream.end()必须写上才能触发
console.log('写入完成')
})
- 管道流:主要用于复制大文件
const fs = required('fs');
// 创建一个可读流
const readStream= fs.createReadStream('input.txt')
// 创建一个可写流
const writeStream = fs.createWriteStream('output.txt')
// 管道读写操作
// 读取input.txt文件内容,并将内容写入到output.txt文件中
readStream.pipe(writeStream)
console.log('程序执行完毕')