Node.js学习二(fs 文件系统)

本文详细介绍了Node.js的fs模块,包括fs文件系统模块的概念、同步与异步操作、回调函数的使用。重点讲解了如何读取和写入文件,如fs.readFile()、fs.readFileSync()、fs.writeFile(),并提供了读取和写入文件的示例。此外,还涉及路径动态拼接问题、打开文件、获取文件信息、创建和删除目录以及读取目录等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、什么是fs文件系统模块

fs模块是Node.js官方提供的,用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

使用fs模块操作文件时,需要先导入它,代码如下:

const fs = require(‘fs’)

二、同步与异步

(1)同步:程序在涉及到文件IO时,必须等到文件IO操作结束后再执行后续的操作。

(2)异步:程序在涉及到文件IO时,不等待文件IO操作结束,继续执行后续的操作,当文件IO操作结束后系统会通知程序处理文件IO的结果。

所有文件系统操作都具有同步和异步形式,供开发者选择。
异步的形式总是将完成回调作为其最后一个参数。传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。如果操作成功完成,则第一个参数是null或undefined。

三、回调函数

所谓“回调”,就是”回头再调”。回调函数并不是马上调用,而是需要等到事件触发了以后再执行。回调是一个异步等效的功能,在完成特定任务后回调函数被调用。

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

1、fs.readFile()

用于异步读取数据。 - - - - 也叫非阻塞方式读

语法格式如下:

fs.readFile(path[,options],callback);

path:必选参数,字符串,表示文件的路径,可以是绝对路径,也可以是相对路径。注意,如果是相对路径,是相对于当前进程所在的路径(process.cwd()),而不是相对于当前脚本所在的路径。
option:可选参数,表示以什么编码格式来读取文件
callback:必选参数,文件读取完成后,通过回调函数拿到读取的结果,该函数的第一个参数是发生错误时的错误对象,第二个参数是代表文件内容的Buffer实例。
举例如下:

//导入fs模块
const fs = require('fs');
//调用readFile()方法读取文件
fs.readFile('./fs1.txt','utf8',function(err,dataStr){
   
   
   	console.log(err);
   	console.log('-----');
   	console.log(dataStr);
});
console.log('异步读取文件')
//err代表打印失败后的结果,dataStr代表打印成功后的结果

成功时的结果如下:
在这里插入图片描述

此时err为null,dataStr为打印出的结果,且我们可以发现,先打印出了“异步读取文件”的结果,这就可以看出fs.readFile()用于异步读取数据的特性,在涉及到文件IO时,它不等待文件IO操作结束,会继续执行后续的操作,当文件IO操作结束后系统会通知程序处理文件IO的结果。

失败后的结果如下,此时我们故意写一个错误的文件名。

//导入fs模块
const fs = require('fs');
//调用readFile()方法读取文件
fs.readFile(__dirname+'/fs2.txt','utf8',function(err,dataStr){
   
   
    console.log(err);
    console.log('-----');
    console.log(dataStr);
});
console.log('异步读取文件')
//err代表打印失败后的结果,dataStr代表打印成功后的结果

在这里插入图片描述
则err会打印出错误对象,dataStr结果为undefined

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

可以通过err对象是否为null,从而判断文件读取的结果。

//判断文件是否读取成功
//导入fs模块
const fs = require('fs');
fs.readFile('./fs1.txt','utf8',function (err,result){
   
   
    if(err){
   
   
        console.log('读取失败:'+err.message)
    }else{
   
   
        console.log('读取成功')
        console.log(result)
    }
})

读取成功时打印结果如下:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值