是什么:nodejs提供的操作文件的模块
fs.readFile()
fs.writeFile()
js中使用 fs模块操作文件,先导入fs
const fs=require('fs')
fs.readFile() 读取指定文件的内容
语法格式
fs.readFile(path[, options], callback)
path
:必选参数,字符串,表示文件路径options
:配置选项,可选参数,若是字符串则指定编码格式,表示以什么编码格式读取文件encoding
:编码格式flag
:打开方式
callback
:必选参数,通过回调函数拿到读取成功或失败的结果err
:错误信息data
:读取成功的数据,如果未指定编码格式则返回一个 Buffer
例子
以utf-8格式读取文件,并打印err和dataStr
const fs=require("fs");
fs.readFile('./fs.html','utf8',function(err,data){console.log(err);//null 读取失败的结果console.log(data);//hmtl文件内容 读取成功的结果
})
fs.writeFile() 向指定文件中写入内容
语法格式
fs.writeFile(file, data[, options], callback)
参数:
file: 必选,字符串 表示 文件的存放路径
data:必选,表示要写入内容
options:可选参数,以什么格式写入内容,默认为utf8
callback:必选,文件写入完成后的回调函数 ,callback中参数 err 写入失败的错误信息
const fs=require("fs");
fs.writeFile("./files/write.txt","007",'utf8',function(err){console.log(err);//null
})
写入文件会自动创建,如果文件之前存在,会覆盖之前内容
给文件追加写入内容
const fs=require("fs");
fs.appendFile("./files/01.txt", "\r\n这是在01.txt文件内追加的内容", (err) => {if (err) {console.log("追加失败!");} else {console.log("追加成功!");}});
复制文件
readFile 回调函数中 writeFile
const fs=require("fs");
fs.readFile('./files/a.txt','utf8',function(err,data){if(err){console.log("读取失败:"+err);} else {console.log(data);}fs.writeFile("./files/04.txt",data,'utf8',function(err){if(!err) {console.log("写入成功");}})
})
路径动态拼接问题 __dirname
- 在使用 fs 模块操作文件时,如果提供的操作路径是以
./
或../
开头的相对路径时,容易出现路径动态拼接错误的问题 - 原因:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径
- 解决方案:在使用 fs 模块操作文件时,直接提供完整的路径,从而防止路径动态拼接的问题
__dirname
获取文件所处的绝对路径,不包含文件
// __dirname 获取文件所处的绝对路径
// ../fs模块 是相对路径
console.log(__dirname);//D:\StudyAndhi\nodejs\fs模块 获取当前文件的绝对路径
__dirname 好处,可在当前路径下创建新的文件
参考:
https://brucecai55520.gitee.io/bruceblog/notes/nodejs/node.html#初识-nodejs