NodeJS
文件处理
FS
代码示例:
// server.js
const fs = require('fs')
const {data} = require("cheerio/lib/api/attributes")
fs.mkdir('./foo', err => {
// 创建一个空文件夹
console.log(err) // 成功则返回null
if (err && err.code === 'EEXIST') {
console.log('文件夹已存在')
}
})
fs.rename('./foo', './bar', err => {
// 重命名文件夹
console.log(err)
if (err && err.code === 'ENOENT') {
console.log('文件夹不存在')
}
})
fs.rmdir('./bar', err => {
// 删除空文件夹
console.log(err)
if (err && err.code === 'ENOENT') {
console.log('文件夹不存在')
}
})
fs.writeFile('./foo/bar.txt', 'Hello World!', err => {
// 创建文件并写入内容(有相同文件则会覆盖内容)
console.log(err)
})
fs.appendFile('./foo/bar.txt', '\n----', err => {
// 追加内容
console.log(err)
})
fs.readFile('./foo/bar.txt', 'utf-8', (err, data) => {
// 读文件内容
if (!err) { // error-first
console.log(data)
}
})
fs.unlink('./foo/bar.txt', err => {
// 删除文件
console.log(err)
if (err && err.code === 'ENOENT') {
console.log('文件不存在')
}
})
fs.readdir('./foo', (err, data) => {
// 获取文件夹的文件信息
if (!err) {
console.log(data)
}
})
fs.stat('./foo', (err, data) => {
// 获取URL的详细信息
if (!err) {
console.log(data.isFile()) // 是否为一个文件
console.log(data.isDirectory()) // 是否为一个文件夹
}
})
try { // 报的是系统级别的错误(会导致项目崩掉)
fs.mkdtempSync('./foo') // 创建文件夹的同时阻塞后面的代码运行(同步)
} catch (error) {
console.log(error)
}
fs.readdir('./foo', (err, data) => {
if (!err) {
data.forEach(item => {
// fs.unlink(`./foo/${item}`, err => {}) // 异步
try {
fs.unlinkSync(`./foo/${item}`)
} catch (error) {
console.log(error)
}
fs.rmdir('./foo', err => {
console.log(err)
})
})
}
})
// server02.js
const fs = require('fs').promises // 第二种写法
fs.mkdir('./foo').then(data => {
console.log(data)
}).catch(err => console.log(err))
fs.readFile('./foo', 'utf-8').then(data => {
console.log(data)
}).catch(err => console.log(err))
fs.readdir('./foo').then(async data => {
let arr = []
data.forEach(item => {
arr.push(fs.unlink(`./foo/${item}`))
})
await Promise.all(arr) // 等待数组里面的元素都执行完毕
await fs.rmdir('./foo')
}).catch(err => console.log(err))
fs.readdir('./foo').then(async data => { // 第二种写法
await Promise.all(data.map(item => fs.unlink(`./foo/${item}`)))
await fs.rmdir('./foo')
}).catch(err => console.log(err))