fs(file system)是一个对文件的增删查改模块工具,下面例子列举同步和异步的方法
const fs = require('fs')
const fsPromises = require('fs/promises') //node ^10
//文件夹操作 start
// fs.mkdir('logs', (err) => {
// if (err) throw err
// console.log('文件夹创建succ')
// })
// fs.rename('./logs', './log', () => {
// console.log('文件夹修改名称succ')
// })
// fs.rmdir('./log', () => {
// console.log('删除成功')
// })
// fs.readdir('./logs', (err, result) => {
// console.log(result)
// })
//文件夹操作end
//文件操作start
// fs.writeFile('./logs/log1.log', 'hello\nworld', (err) => {
// console.log('创建并写入内容succ')
// })
// fs.appendFile('./logs/log1.log', '\nappend Content', (err) => {
// console.log('添加文件内容succ')
// })
// fs.unlink('./logs/log1.log', (err) => {
// console.log('删除文件suc')
// })
// fs.readFile('./logs/log1.log', 'utf-8', (err, content) => {
// console.log('读取文件内容', content)
// })
// fs.readFile('./logs/log1.log', (err, content) => {
// console.log('读取文件内容', content.toString())
// })
//异步读取
// fs.readFile('./logs/log1.log', (err, content) => {
// console.log(content.toString())
// })
// //同步读取
// const content = fs.readFileSync('./logs/log1.log')
// console.log(content)
// ; (async () => {
// let res = await fsPromises.readFile('./logs/log1.log')
// console.log(res.toString())
// })()
// for (var i = 0; i < 10; i++) {
// fs.writeFile(`./logs/log${i}.log`, `log-${i}`, (err) => {
// console.log('批量创建succ')
// })
// }
//递归获取文件内容
function readDir(dir) {
fs.readdir(dir, (err, content) => {
content.forEach((value, index) => {
let dirStr = `${dir}/${value}`
fs.stat(dirStr, (err, stats) => {
//判断是否是文件夹
if (stats.isDirectory()) {
readDir(dirStr)
} else {
fs.readFile(dirStr, (err, content) => {
console.log(content.toString())
})
}
})
})
})
}
// readDir('./')
//监听文件
// //watch会因为系统的不同,并且在某些情况下不可用。参考node.js文档api详细介绍
// fs.watch('./logs/log0.log', (err) => {
// console.log('file has changed')
// })
// //watchFile兼容性会有所改善
// fs.watchFile('./logs/log1.log', (curr, prev) => {
// console.log(`the current mtime is: ${curr.mtime}`);
// console.log(`the previous mtime was: ${prev.mtime}`);
// })
//文件操作end