Node fs 模块常用api

  1. fs – 文件模块
    注:是内置模块,直接require引入即可。
    fs.stat(file, (err,data)=>{}) 查询文件状态(data.isFile()–判断是否是文件,isDirectory()–判断是否是文件夹)
    fs.mkdir(fileName,err => {}) 创建文件夹 (fileName–文件夹名称,重复会报错,例如:’./test‘),注意:此方法不能连续创建文件夹,例如:/test/one/two
    fs.readdir(fileName,err => {})读取文件夹,返回文件夹的所有直系子文件名称,移动文件位置等
    fs.rename(newFileName,oldFileName,err => {})修改文件夹、文件的名称
    fs.writeFile(file,err=> {}) 创建文件 (file—对应路径下的文件,包括文件名,例如:’./test/test.txt‘ ,如文件已存在,会覆盖原文件内容)
    fs.appendFile(file,err=> {}) 追加文件内容,会在文件内容末尾追加(若文件不存在,回先自动创建,类似于writeFile)
    fs.readFile(file,’utf-8‘,(err,data)=>{}) 读取文件内容,不设置格式,会返回Buffer数据,需要设置格式,例如utf-8,或者通过data.toString()进行转化
    fs.unlink(file,err=> {}) 删除文件
    fs.rmdir(file,err=> {}) 删除文件夹,若文件夹下有文件,会报错,只能删除空文件夹
    注:若要连续创建文件夹,可以下载mkdirp模块包,mkdirp('./one/two/three') 既可以创建连续目录。(目前测试不支持创建文件,写入内容,npm地址:https://www.npmjs.com/package/mkdirp)
    以上api基本都有对应的async 写法。
// 引入文件模块
const fs = require('fs')
const mkdirp = require('mkdirp')
// fs.stat('./request.js',(err,data) => {
//   if (err) return
//   console.log(`是文件:${data.isFile()}`)
//   console.log(`是目录:${data.isDirectory()}`)
// })
// fs.mkdir('./test1/one1',err=> {
//   if (err) return console.log(err);
//   console.log('创建成功!');
// })
// fs.writeFile('./test/one/one23.txt','我是内容99哦!',err => {
//   if (err) return 
//   console.log('创建文件成功!');
// })
// fs.appendFile('./test/test.txt','我是加入的哦!',err=>{
//   if (err) return
//   console.log('追加文件成功!');
// })
// fs.readFile('./test/test.txt','utf-8',(err,data) => {
//   if (err) return 
  // console.log(`读取文件内容是:${data}`);
// })
// fs.readdir('./test',(err,data) => {
//   if (err) return
//   console.log(`改文件加下的文件如下:${data}`);
// })

// fs.rename('./test/two/one.txt','./test/one/one.txt',err => {
//   if (err) return 
//   console.log('修改/移动文件成功');
// })
// fs.unlink('./test/two/two.txt',err=> {
//   if (err) return 
//   console.log('删除文件成功');
// })
// fs.rmdir('./test/two',err=> {
//   if (err) return 
//   console.log('删除文件夹成功');
// })
// 直接回调,某些版本会报错,需要拆成 .then .catch
// mkdirp('./one/two/three').catch(err => {
//   console.log(err,88);
// }).then(res => {
//   console.log(res);
// })

2.fs流操作

  • 写入流createWriteStream
  • 读取流createReadStream
  • 管道流pipe
  writeStr:(str) => {
    // 需要先创建流
    const writeStream = fs.createWriteStream('./test.txt')
    writeStream.write(str)  // str为写入内容
    writeStream.end() // 此句必须写,不然无法触发下面的finish事件
    writeStream.on('finish',() => {
      console.log('写入完成');
    })
  }
let str = ''
let count = 0
let readStream = fs.createReadStream('./test.txt')
console.log(readStream);
readStream.on('data',data => {
  str += data
  count++
})
readStream.on('end',() => {
  console.log(str,'str----',count);
})
readStream.on('err',err => {
  console.log(err,'err----');
})
let readStream = fs.createReadStream('./test.txt')
let writeStream = fs.createWriteStream('./one.txt')
// 将读取的test文件内容,写入到one,one如有内容,会被覆盖
readStream.pipe(writeStream)

问题:目前创建文件夹时,如果该路径下,存在一个同名的不带任何后缀名的文件,会导致创建文件夹报错,目前还未发现解决办法,如有知道的小伙伴,欢迎解惑!

如有错误,欢迎大家指正留言,相互学习!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值