##fs模块
Node.js官方提供的、用来操作文件的模块
(1)fs.readFile()方法,用来读取指定文件中的内容
(2)fs.writeFile()方法,用来向指定的文件中写入内容
1、导入fs模块
const fs = require('fs')
2、fs.readFile()读取文件内容
(1)语法格式
fs.readFile(path[,options],callback)
参数1,必选参数,字符串,表示文件的路径;参数2,可选参数,表示以什么编码格式来读取文件;参数3,必选参数,文件读取完后,通过回调函数拿到读取的结果
(2)例子
// 导入fs模块来操作文件
const fs = require('fs')
fs.readFile('./files/1.txt','utf-8',function(err,dataStr) {
// 打印失败的结果
if(err){
return console.log('读取文件失败!'+err.message)
}
// 打印成功的结果
console.log('读取文件成功!'+dataStr)
})
PowerShell中执行该js文件
PS C:\Users\HAO21\Desktop\nodejs_basic> node .\01.使用readFile方法读取文件内容.js
读取文件成功!Hello Node.js!!!
3、fs.writeFile()写入内容
(1)语法格式
fs.writeFile(file,data[,options],callback)
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径;参数2:必选参数,表示要写入的内容;参数3,可选参数,表示以什么格式写入文件内容,默认是utf-8;参数4,必选参数,文件写入后,通过回调函数拿到读取的结果
(2)例子
// 导入fs模块来操作文件
const fs = require('fs')
fs.writeFile('./files/2.txt','abcdef',function(err){
if(err){
return console.log('文件写入失败'+err.message)
}
console.log('文件写入成功')
})
PowerShell中执行该js文件
PS C:\Users\HAO21\Desktop\nodejs_basic> node .\02.writeFile写入文件内容.js
文件写入成功
#案例:考试成绩
const fs = require('fs')
fs.readFile('./files/score.txt','utf8',function(err,dataStr){
if(err){
return console.log('读取文件失败!'+err.message)
}
// 1、先把成绩的数据,按照空格进行分割
const arrOld = dataStr.split(' ')
// 2、循环分割后的数组,对每一项数据,进行字符串的替换操作
const arrNew = []
arrOld.forEach(item => {
arrNew.push(item.replace('=',':'))
})
// 3、把新数组中的每一项,进行合并,得到一个新的字符串
const newStr = arrNew.join('\r\n')
// 将处理好的文件写入到一个新的文件中score_ok.txt
fs.writeFile('./files/score_ok.txt', newStr,function(err){
if(err){
return console.log('score_ok文件写入失败!',err.message)
}
console.log('score_ok文件写入成功!')
})
})
PS C:\Users\HAO21\Desktop\nodejs_basic> node .\03.考试成绩整理.js
score_ok文件写入成功!
##路径动态拼接问题
const fs = require('fs')
fs.readFile('./files/1.txt','utf-8',function(err,dataStr) {
if(err){
return console.log('读取文件失败!'+err.message)
}
console.log('读取文件成功!'+dataStr)
})
PS C:\Users\HAO21\Desktop\nodejs_basic> node .\04.路径动态拼接.js
读取文件成功!Hello Node.js!!!
PS C:\Users\HAO21\Desktop\nodejs_basic> cd ..
PS C:\Users\HAO21\Desktop> node .\nodejs_basic\04.路径动态拼接.js
读取文件失败!ENOENT: no such file or directory, open 'C:\Users\HAO21\Desktop\files\1.txt'
#解决
const fs = require('fs')
// fs.readFile('./files/1.txt','utf-8',function(err,dataStr) {
// if(err){
// return console.log('读取文件失败!'+err.message)
// }
// console.log('读取文件成功!'+dataStr)
// })
// 方案1:使用绝对路径
// fs.readFile('C:\\Users\\HAO21\\Desktop\\nodejs_basic\\files\\1.txt','utf-8',function(err,dataStr) {
// if(err){
// return console.log('读取文件失败!'+err.message)
// }
// console.log('读取文件成功!'+dataStr)
// })
// 方案2:使用__dirname,__dirname表示当前文件所处的目录
fs.readFile(__dirname+'/files/1.txt','utf-8',function(err,dataStr) {
if(err){
return console.log('读取文件失败!'+err.message)
}
console.log('读取文件成功!'+dataStr)
})