fs文件系统模块

什么是fs文件系统模块

fs模块是Node.js官方提供的、用来操作文件的模块(内置的模块)。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
例如:
1.fs.readFile()方法,用来读取指定文件中的内容
2.fs.writeFile()方法,用来向指定的文件中写入内容
如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下方式先导入它:

const fs=require('fs')

读取指定文件中的内容

1. fs.readFile()的语法格式
使用fs.readFile()方法,可以读取指定文件的内容,语法格式如:

fs.readFile(path,[options],callback)
//参数解读
//参数1:必选参数,字符串,表示文件的路径
//参数2:可选参数,表示以什么编码格式来读取文件
//参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

fs.readFile()的示例代码

const fs = require('fs')

//nodejs中强烈建议使用绝对路径,使用相对路径拼接的过程中,会以终端的位置进行拼接,从而导致找不到文件
fs.readFile('./files/1.txt', 'utf8', function(err, dataStr) {
  if (err) {
    return console.log('读取文件失败!' + err.message)
  }
  console.log('读取文件成功!' + dataStr)
})

2.fs.writeFile()

// 1. 导入 fs 文件系统模块
const fs = require('fs')

// 2. 调用 fs.writeFile() 方法,写入文件的内容
//    参数1:表示文件的存放路径
//    参数2:表示要写入的内容
//    参数3:回调函数
fs.writeFile('./files/3.txt', 'ok123', function(err) {
  // 2.1 如果文件写入成功,则 err 的值等于 null
  // 2.2 如果文件写入失败,则 err 的值等于一个 错误对象
  // console.log(err)

  if (err) {
    return console.log('文件写入失败!' + err.message)
  }
  console.log('文件写入成功!')
})

示例

// 1. 导入 fs 模块
const fs = require('fs')

// 2. 调用 fs.readFile() 读取文件的内容
fs.readFile('../素材/成绩.txt', 'utf8', function(err, dataStr) {
  // 3. 判断是否读取成功
  if (err) {
    return console.log('读取文件失败!' + err.message)
  }
  // console.log('读取文件成功!' + dataStr)

  // 4.1 先把成绩的数据,按照空格进行分割
  const arrOld = dataStr.split(' ')
  // 4.2 循环分割后的数组,对每一项数据,进行字符串的替换操作
  console.log(arrOld)
  const arrNew = []
 arrOld.forEach(item=>{
  arrNew.push(item.replace('=',': '))
 })
  // 4.3 把新数组中的每一项,进行合并,得到一个新的字符串
  // \r\n代表回车换行
  const newStr = arrNew.join('\r\n')

  // 5. 调用 fs.writeFile() 方法,把处理完毕的成绩,写入到新文件中
  fs.writeFile('./files/成绩-ok.txt', newStr, function(err) {
    if (err) {
      return console.log('写入文件失败!' + err.message)
    }
    console.log('成绩写入成功!')
  })
})

路径动态拼接问题

出现路径拼接错误的问题,是因为提供了 ./ 或 …/ 开头的相对路径
如果要解决这个问题,可以直接提供一个完整的文件存放路径就行

// __dirname 表示当前文件所处的目录
console.log(__dirname)

通过dirname的拼接解决路径拼接错误的问题

//__dirname为当前文件所处的路径
fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err, dataStr) {
  if (err) {
    return console.log('读取文件失败!' + err.message)
  }
  console.log('读取文件成功!' + dataStr)
})

path路径模块(在nodejs中一定要使用绝对路径)

(使用绝对路径也会因为操作系统环境的不同,导致路径名格式的变化,因此推荐使用path.join()方法拼接,join方法会使用特定的平台分割符,作为界定符)
1.path.join()方法,可以把多个路径片段拼接成完整路径的字符串,语法格式如下:

//引入path模块
const path=require('path')

// 注意:  ../ 会抵消前面的路径
 const pathStr = path.join('/a', '/b/c', '../../', './d', 'e')
 //  ..在路径拼接的过程中会使_dirname转换到当前目录的上一级目录
 console.log(pathStr)  
 // \a\b\d\e

注意:今后凡是涉及到路径拼接的操作,都要使用path.join()方法进行处理。不要直接使用+进行字符串的拼接

2.互取路径中的文件名 path.basename()方法

const path = require('path')

// 定义文件的存放路径
const fpath = '/a/b/c/index.html'

// const fullName = path.basename(fpath)
// console.log(fullName)
// index.html

//去除后缀名
const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt)
//index

3.获取路径中文件中的扩展名 path.extname()

// 这是文件的存放路径
const fpath = '/a/b/c/index.html'

const fext = path.extname(fpath)
console.log(fext)
//  .html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值