nodejs --- fs模块

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', '同步写入')

流式写入

// 流式写入适合大文件或者高频率写入
// writeFile 适合低频率写入

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 data = fs.readFileSync('./webzh.png')

// fs.writeFileSync('./webzh-copy1.png', data)
// console.log(process.memoryUsage())

// 方法二

// const rs = fs.createReadStream('./webzh.png')

// const ws = fs.createWriteStream('./webzh-copy2.png')

// rs.on('data', chunk => {
//   ws.write(chunk)
// })

// rs.on('end', () => {
//   console.log(process.memoryUsage())
// })

// 方法三
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')
// __dirname 所在文件所在目录的绝对路径
fs.writeFileSync(__dirname + '/data1.html', '123')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值