Skip to content

一、fs文件系统模块

1、读取指定文件中的内容

1、fs.readFile()的语法格式

js
fs.readFile(path[,option],callback)
  • 参数1:必选参数,字符串,表示文件的路径
  • 参数2:可选参数,表示以什么编码格式来读取文件
  • 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

例:

js
const fs=require('fs')
fs.readFile('./file/11.txt','utf8',function(err,dataStr){
    //读取失败err为错误对象,读取成功为null
	console.log(err)
	console.log('-----')
	console.log(dataStr)//读取失败为undefined
})

2、判断文件是否读取成功

js
const fs=require('fs');
fs.readFile('./file/1.txt','utf8',function(err,result){
	if(err){
		return console.log('文件读取失败!'+err.message)
	}
	console.log('文件读取成功,内容是:'+result)
})

2、向指定文件中写入内容

1、fs.writeFile()的语法格式

js
fs.writeFile(path,data,[,option],callback)
  • 参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
  • 参数2:必选参数,表示写入的内容
  • 参数3:可选参数,表示以什么格式写入文件内容,默认值是utf8
  • 参数4:必选参数,文件写入后完成的回调函数
js
const fs=require('fs')
fs.writeFile('./file/2.txt','hello Node.js!','utf8',function(err){
    //如果写入成功,err的值为null,否则为错误对象
	console.log(err)
})

2、判断文件是否写入成功

js
const fs=require('fs');
fs.writeFile('./file/1.txt','hello Node.js!','utf8',function(err){
	if(err){
		return console.log('文件写入失败!'+err.message)
	}
	console.log('文件写入成功!')
})

3、路径动态拼接的问题

bug:在使用fs模块操作文件,如果提供的操作是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题

原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径

解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而防止路径动态拼接的问题

js
//不要使用./或../这样的相对路径
fs.readFile('./file/1.txt','utf8',function(err,result){
	if(err){
		return console.log('文件读取失败!'+err.message)
	}
	console.log('文件读取成功,内容是:'+result)
})

//__dirname表示当前文件所处的目录
fs.readFile(__dirname+'/file/1.txt','utf8',function(err,result){
	if(err){
		return console.log('文件读取失败!'+err.message)
	}
	console.log('文件读取成功,内容是:'+result)
})