1. 什么是fs文件系统模块
fs模块是Node.js官方提供的, 用来操作文件的模块, 它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
例如:
- fs.readFile(): 用来读取只当文件中的内容
- fs.writeFile(): 用来向指定的文件中写入内容
在代码中使用fs模块操作文件, 需要先导入改模块。const fs = require(‘fs’)
2. 读取指定文件中的内容
使用fs.readFile(),可以读取指定文件中的内容,
fs.readFile()的语法格式:fs.readFile(path[,options], callback)
参数解读:
- 参数一: 必选参数, 字符串, 表示文件的路径
- 参数二:可选参数, 表示以什么编码格式来读取文件
- 参数三: 必选参数, 文件读取完成后, 通过回调函数返回读取的结果。
判断读取是否成功:const fs = require('fs')
fs.readFile('../data/test.txt','utf-8', function(err, dataStr){
console.log(err)
console.log(dataStr)
//我是测试数据
/**
* 如果读取成功,则err的值为null,
* 如果读取失败, err的值为错误对象, dataStr的值为undefined
*/
})
const fs = require('fs') fs.readFile('../data/test.txt1','utf-8', function(err, dataStr){
if(err){
return console.log('读取失败', err.message)
}else{
console.log('读取成功',dataStr)
}
})
3. 给指定文件中写入内容
使用fs.writeFile()方法, 可以向指定文件中写入内容,
语法格式:fs.writeFile(file, data[,options], callback)
参数解读:
参数一: 必选参数,需要指定一个文件路径的字符串, 表示文件存放的路径
参数二: 必选参数, 表示要写入的内容。
参数三:可选参数,表示以什么格式写入文件内容,默认值是utf8
参数四: 必选参数, 文件写入完成后的回调函数。
如何判断是否写入成功const fs = require('fs') fs.writeFile('../data/testhah2.txt','haha', function(err){
console.log(err)
/**
* 如果写入成功,则err的值等于null
* 如果写入失败, 则err的值等于错误对象
* 如果只是修改文件的名字, 系统找不到改文件的名字, 就会默认生成一个文件名, 然后写入值
*/
})
const fs = require('fs') fs.writeFile('f:../data/testhah2.txt','haha', function(err){
if(err){
return console.log('写入失败', err.message)
}else{
console.log('写入成功')
}
})
4. __dirname
__dirname表示当前文件所处的目录。
使用fs模块操作文件时, 如果提供的操作路径是以./或者../开头的相对路径时, 很容易出现错误。
此时可以使用__dirname解决路径问题。const fs = require('fs') fs.writeFile(__dirname+'/data/testhah36.txt','haha', function(err){
if(err){
return console.log('写入失败', err.message)
}else{
console.log('写入成功')
}
})
5. 综合练习
把score.txt文件夹中的小红_99 小李_64 小张_72 Iric_89内如写入到score_ok.txt中, 并对一个人进行换行。const fs = require('fs')
let content = '' fs.readFile('../data/score.txt','utf8', (err, req) =>{
if(err){
return console.log('读取失败', err.message)
}else{
console.log(req)
content = req.split(' ');
const arr = content.map(item => {
item = item.replace('_', ':')
return item;
})
const newStr = arr.join('\r\n')
fs.writeFile('../data/score_ok.txt',newStr, err => {
if(err){
console.log('写入失败', err.message)
}else{
console.log('写入成功')
}
})
}
})