视频链接:黑马程序员Node.js全套入门教程
fs文件系统模块
官方文档:File system Documentation (nodejs.org)
1 什么是fs文件系统模块
fs模块是Nodejs官方提供的,用来操作文件的模块,它提供了一系列的方法和属性,用来满足用户对文件的操作需求
例如:
fs.readFile()
方法,用来读取指定文件中的内容fs.writeFile()
方法,用来向指定的文件中写入内容
在js文件中,可以使用如下方式导入
const fs = require('fs')
2 读取指定文件中的内容
语法格式
fs.readFile(path[, options], callback)
参数解释
path
:文件路径(必选)options
:配置选项,若是字符串则指定编码格式encoding
:编码格式flag
:打开方式
callback
:回调函数(必选)err
:错误信息data
:读取的数据,如果未指定编码格式则返回一个 Buffer
示例代码
const fs = require('fs')
fs.readFile('./test.txt', 'utf8', (err, data) => {
if (err) {
// 文件读取失败
return console.log(err)
}
console.log(data)
})
如果读取成功,则err的值为null,data的值为文件文本内容
如果读取失败,则err的值为错误对象,data的值为undefined
3 向指定文件中写入内容
写入文件的时候只能创建文件,不能创建目录
重复调用该方法时候,会用新内容覆盖旧内容
语法格式
fs.writeFile(file, data[, options], callback)
参数解释
file
:文件路径,必选data
:写入内容,必选options
:配置选项,包含encoding, mode, flag
;若是字符串则指定编码格式callback
:回调函数,必选
示例代码
const fs = require('fs')
fs.writeFile('./files/txt', "文件内容。。。", 'utf8', err => {
if (err) {
// 写入失败
console.log(err)
} else {
console.log("success")
}
})
如果文件写入成功,则err的值为null
如果文件写入失败,则err的值为错误对象
4 路径动态拼接的问题
在使用fs模块操作文件的时候,如果提供的操作路径是以./
或../
开头的相对路径
,很容易出现路径动态拼接错误的问题
原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接处被操作问价的完整目录
解决方案:在使用fs模块操作文件的时候,直接提供完整路径,不要提供./
或../
开头的相对路径
,从而防止动态路径拼接的问题
__direname
表示当前文件所处的目录(注意是双下划线)
fs.readFile(__dirname + '/files/test.txt', 'utf8', (err, data) => {
if (err) {
// 文件读取失败
return console.log(err)
}
console.log(data)
})
5 其他操作
验证路径是否存在:
fs.exists(path, callback)
fs.existsSync(path)
获取文件信息:
fs.stat(path, callback)
fs.stat(path)
删除文件:
fs.unlink(path, callback)
fs.unlinkSync(path)
列出文件:
fs.readdir(path[,options], callback)
fs.readdirSync(path[, options])
截断文件:
fs.truncate(path, len, callback)
fs.truncateSync(path, len)
建立目录:
fs.mkdir(path[, mode], callback)
fs.mkdirSync(path[, mode])
删除目录:
fs.rmdir(path, callback)
fs.rmdirSync(path)
重命名文件和目录:
fs.rename(oldPath, newPath, callback)
fs.renameSync(oldPath, newPath)
监视文件更改:
fs.watchFile(filename[, options], listener)