fs文件系统模块
-
什么是fs文件系统模块
fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。例如:
-
fs.readFile() 方法,用来读取指定文件中的内容
-
fs.writeFile() 方法,用来向指定的文件中写入内容
如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式导入它:
const fs = require('fs')
fs.readFile(path[,options],callback)
fs.readFile()语法格式
参数1:必选参数,字符串,表示文件的路径
参数2:可选参数,表示以什么编码格式来读取文件
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果
const fs = require('fs');
fs.readFile('./11.txt', 'utf-8', function (err, dataStr) {
console.log(err, 'err')
if (err) return console.log('读取文件失败!' + err);
console.log('读取文件成功!' + dataStr);
})
fs.writeFile()的语法格式
fs.writeFile(file, data[, options], callback)
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
参数2:必选参数,表示要写入的内容,可以字符串或Buffer对象
参数3:可选参数,表示以什么格式来保存写入的内容,默认值是utf - 8
参数4:必选参数,文件写入完成后的回调函数
fs.writeFile('./11.txt', 'hello world', function (err) {
if (err) return console.log('写入文件失败!' + err);
console.log('写入文件成功!');
})
- fs模块-路径动态拼接的问题
在使用fs模块操作文件时,如果提供的操作路径是以./ 或…/ 开头的相对路径时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候,会以执行node命令是所处的目录,动态拼接出被操作文件的完整路径。
解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./ 或…/ 开头的相对路径,从而防止路径动态拼接的问题。
//不要使用 ./或../这样的相对路径
fs.readFile('./11.txt', 'utf-8', function (err, dataStr) {
if (err) return console.log('读取文件失败!' + err);
console.log('读取文件成功!' + dataStr);
})
//_dirname 表示当前文件所处的目录
fs.readFile(__dirname + '/11.txt', 'utf8', function (err, dataStr) {
if (err) return console.log('读取文件失败!' + err.message);
console.log('读取文件成功!' + dataStr);
})
- path路径模块
- 定义:path模块是Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
- path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串
path.join([...paths])
const path = require('path')
const pathStr = path.join('/a', '/b/c', 'index.html')
console.log(pathStr) // \a\b\c\index.html
- path.basename() 方法,用来从路径字符串中,将文件名解析出来
使用path.basename()方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,语法格式如下:
path.basename(path[, ext])
参数path是一个必选参数,表示一个路径的字符串;
参数ext 是一个可选参数,表示文件扩展名,如果提供了该参数,则获取不带扩展名的文件名;
返回值:表示路径中的最后一部分。
const fpath = '/a/b/c/index.html'
var fullName = path.basename(fpath)
console.log(fullName) // index.html
var nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt) // index
- path.extname(),获取路径中的扩展名部分
path.extname(path)
path参数,表示一个路径的字符串。
返回值:表示路径中的扩展名部分。
const fext = path.extname(fpath)
console.log(fext, '扩展名') // .html