Node.js API – 文件系统模块fs
1.认识fs
fs 模块是 Node.js 官方提供的,用来操作文件的模块,它提供了一系列的方法和属性,来满足用户对文件的操作需求
例如
fs.readFile(),读取文件中的内容
fs.writeFile(),用来向指定文件中写入内容
如果再JavaScript代码中,使用 fs 模块来操作文件,则需要先导入:
const fs = require('fs')
//这个 'fs' 是在安装node时就已经安装到电脑上的
2. 读取 指定文件中的内容
fs.readFile() 语法格式
fs.readFile(path [,options],callback)
//中括号中的是可选参数
- 参数1:文件路径,字符串
- 参数2:可选参数,表示以什么编码格式来读取文件 ,默认是 ‘utf8’
- 参数3:必选参数,文件读取完后,通过回调函数拿到读取的结果,function(err,data)
fs的执行过程值得注意
判断是否读取成功
可以判断 err 的值是否为 null
if (err) {
console.log('文件读取失败:' + err.message)
} else {
console.log("文件读取成功,内容是:" + data)
}
3.向指定文件中 写入 内容
fs.writeFile() 语法格式
fs.writeFile(path,data [,options],callback)
- 参数1:需要指定一个 文件路径的字符串,表示文件的存放路径
- 参数2:表示要写的内容
- 参数3:写入内容的 格式,默认格式是 utf8
- 参数4:写完之后的回调函数 function(err){}
示例
var fs = require('fs')
fs.writeFile('./aaa.txt', "hello Node.js", function (err) {
console.log(err)
})
判断文件是否写入
可以判断 err 的值是否为 null
if (err) {
console.log('文件写入失败:' + err.message)
} else {
console.log("文件写入成功)
}
4.路径动态拼接问题(__dirname)
在使用 fs 模块操作文件是,如果提供的操作路径是以 ./ 或 …/ 开头的相对路径时,很容易出现路径动态拼接错误的问题
原因:代码在运行时,会以执行node命令时所处的目录,动态拼接处被操作文件的完整路径
**解决方案1:**直接提供一个 完整的 存放路径/读取路径(绝对路径中的/ 都换成//)(但移植性差,不利于维护)
解决方法2:使用 __dirname
表示当前文件所处的目录
//导入 fs 系统文件模块
var fs = require('fs')
fs.writeFile(__dirname + '/aaa.txt', "hello Node", function (err) {
console.log(err)
})