fs模块
说明
fs 模块可以实现与硬盘的交互。
例如:文件的创建、删除、重命名、移动;
文件内容的写入、读取;
文件夹的相应操作。
文件写入
应用场景
下载文件
安转软件
保存程序日志
编辑器保存文件
视频录制
需要持久化保存数据
...
异步写入
const fs = require('fs')
fs.writeFile('./文本.txt', '异步写入', err => {
if (err) return console.log('写入失败')
console.log('写入成功')
})
同步写入
const fs = require('fs')
fs.writeFileSync('./data.txt', '同步写入')
流式写入
const fs = require('fs')
const ws = fs.createWriteStream('./stream.txt')
ws.write('创建写入流')
ws.close()
文件追加
异步追加
const fs = require('fs')
fs.appendFile('./文本.txt', '\r\n异步追加', err => {
if (err) return console.log('追加失败')
console.log('追加成功')
})
同步追加
const fs = require('fs')
fs.appendFileSync('./data.txt','\r\n同步追加')
文件读取
应用场景
电脑开机
程序运行
查看图片
编辑器打开文件
播发视频
查看日志
上传文件
...
异步读取
const fs = require('fs')
fs.readFile('./data.txt', (err, data) => {
if (err) return console.log('读取失败')
console.log(data.toString())
})
同步读取
const fs = require('fs')
const data = fs.readFileSync('./stream.txt')
console.log(data.toString())
流式读取
const fs = require('fs')
const rs = fs.createReadStream('./webzh.png')
rs.on('data', chunk => {
console.log(chunk.length)
})
rs.on('end', () => {
console.log('读取完成')
})
复制文件
const fs = require('fs')
const process = require('process')
const rs = fs.createReadStream('./webzh.png')
const ws = fs.createWriteStream('./webzh-copy3.png')
rs.pipe(ws)
文件重命名
异步重命名
const fs = require('fs')
fs.rename('./data.txt', './data1.txt', err => {
if (err) return console.log('重命名失败')
console.log('重命名成功')
})
同步重命名
const fs = require('fs')
fs.renameSync('./data1.txt', './data2.txt')
文件移动
异步移动
const fs = require('fs')
fs.rename('./data.txt', './doc/data.txt', err => {
if (err) return console.log('移动失败')
console.log('移动成功')
})
同步移动
const fs = require('fs')
fs.renameSync('./data.txt', './doc/data.txt')
文件删除
同步删除
const fs = require('fs')
fs.unlinkSync('./文本.txt')
fs.rmSync('./文本.txt')
异步删除
const fs = require('fs')
fs.unlink('./文本.txt', err => {
if (err) return console.log('删除失败')
console.log('删除成功')
})
fs.rm('./stream.txt', err => {
if (err) return console.log('删除失败')
console.log('删除成功')
})
创建文件夹
异步创建
const fs = require('fs')
fs.mkdir('./util', err => {
if (err) return console.log('创建失败')
console.log('创建成功')
})
同步创建
const fs = require('fs')
fs.mkdirSync('./api')
递归异步创建
const fs = require('fs')
fs.mkdir('./a/b',{recursive:true}, err => {
if (err) return console.log('创建失败')
console.log('创建成功')
})
递归同步创建
const fs = require('fs')
fs.mkdirSync('./c/d',{recursive:true})
读取文件夹
异步读取
const fs = require('fs')
fs.readdir('./', (err, files) => {
if (err) return console.log('读取失败')
console.log(files)
})
同步读取
const fs = require('fs')
const data = fs.readdirSync('./')
console.log(data)
删除文件夹
异步删除(低版本)
const fs = require('fs')
fs.rmdir('./api', err => {
if (err) return console.log(err, '删除失败')
console.log('删除成功')
})
同步删除(低版本)
const fs = require('fs')
fs.rmdirSync('./api')
递归异步删除(低版本)
const fs = require('fs')
fs.rmdir('./a', { recursive: true }, err => {
if (err) return console.log(err, '删除失败')
console.log('删除成功')
})
递归同步删除(低版本)
const fs = require('fs')
fs.rmdirSync('./a',{ recursive: true })
异步(递归)删除(高版本推荐)
const fs = require('fs')
fs.rm('./api',{recursive:true}, err => {
if (err) return console.log(err, '删除失败')
console.log('删除成功')
})
同步(递归)删除(高版本推荐)
const fs = require('fs')
fs.rmSync('./a',{recursive:true})
获取资源信息
异步获取资源信息
const fs = require('fs')
fs.stat('./data.txt', (err, data) => {
if (err) return console.log(err)
console.log(data)
console.log(data.isFile())
console.log(data.isDirectory())
})
同步获取资源信息
const fs = require('fs')
const data = fs.statSync('./data.txt')
console.log(data)
路径
相对路径(参照物:命令行的工作目录,而不是当前文件的目录)
const fs = require('fs')
fs.writeFileSync('./data.txt','123')
fs.writeFileSync('data.txt','123')
fs.writeFileSync('../data.txt','123')
绝对路径
const fs = require('fs')
fs.writeFileSync('D:/data.txt','123')
fs.writeFileSync(__dirname + '/data1.html', '123')