fs文件系统与path路径

2,025 阅读2分钟

fs.readFile()可以读取指定文件中的内容

fs.readFile(path[,options],callback)
  • 参数1:必选参数,字符串,表示文件的路径。
  • 参数2:可选参数,表示以什么编码格式来读取文件。
  • 参数3∶必选参数,文件读取完成后,通过回调函数拿到读取的结果。
// 1.导入fs模块
const fs = require('fs')
// 2.调用fs.readFile()方法读取文件
fs.readFile('./11.txt','utf-8',function(err,dataStr) {
  // 打印失败的结果
  //如果读取成功,则err的值为null
  //如果读取失败,则err的值为错误对象,dataStr的值为undefined
  console.log(err);
  console.log('-----------');
  // 打印成功的结果
  console.log(dataStr);
})

1.png

fs.writeFile()可以向指定的文件中写入内容

fs.writeFile(file,data[,options],callback)
  • 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。
  • 参数2:必选参数,表示要写入的内容。
  • 参数3:可选参数,表示以什么格式写入文件内容,默认值是utf8。
// 导入fs文件系统模块
const fs = require('fs')
// 调用fs.writeFile()方法,写入文件的内容
fs.writeFile('./11.txt','四大皆空',function(err){
  console.log(err);
})

2.png

fs模块路径拼接问题

在使用fs 模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
解决方案:在使用fs 模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而防止路径动态拼接的问题。 比如不在当前目录下运行文件时就会报错

3.png

所以我们要改为绝对路径,在要复制路径的文件鼠标右击选择复制路径

5.png

4.png (一条\在vscode中表示转义,所以要用两条\)

但是绝对路径也有缺点,移植性非常差,不利于维护(如果把文件移动位置了整个路径都要改)

__dirname 可以用来动态获取当前文件所属目录的绝对路径

所以可以写成这样

9.png

path.join() 可以把多个路径片段拼接为完整的路径字符串

8.png

path.basename() 可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名

path.extname() 可以获取路径中的扩展名部分

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

const fext = path.extname(fpath)
console.log(fext);   //.html