【Node.js】中的fs模块

本文详细介绍了Node.js中的fs模块,包括fs.read()、fs.readFile()、fs.readFileSync、fs.writeFile、fs.copyFile、fs.unlink、fs.open和fs.close等方法的使用,重点讨论了读取和写入文件的不同方式及其应用场景。

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

fs模块的引用

fs模块必须在node.js安装之后才能使用,所以首先必须安装node.js

在js文件中导入文件系统模块

const fs = require('fs');

 对文件的操作

1. fs.read()读取文件数据

 fs.read(fd, buffer, offset, length, position, callback)

从文件描述符fd中读取文件数据。

  • buffer是一个缓冲区,读取的数据将会写入到这里。

  • offset是开始向缓冲区 buffer 写入数据时的偏移量。

  • length是一个整型值,指定了读取的字节数。

  • position是一个整型值,指读取的文件起始位置,如果positionnull,将会从文件当前的位置读取数据。

  • callback中回调函数,其中包含了三个参数(err, bytesRead, buffer),分别表示:错误、读取的字节数、缓冲区。

使用fs.read()方法读取文件内容时,首先需要一个文件描述符fd,创建文件描述符fd可以使用fs.open()方法。

fs.read()方法可以实现部分文件内容的读取。通过lengthposition参数可以指定读取文件内容的长度和读取内容的起始位置。

2.1 fs.readFile()读取文件内容

fs.readFile(filename[, options], callback)

读取文件的全部内容

  • filename表示要读取的文件
  • callback回调函数有2个参数 (err, data),参数 data 是文件的内容。如果没有指定参数encoding, 则返回值为Buffer。

fs.readFile()方法能且只能读取文件的全部内容,通过设置编码方式可以以字符串或Buffer的形式返回读结果。

fs.readFile('./txt/1.txt',function(err,data){
        if(err){
            console.log(err)
        }
        console.log("读取到的数据:"+data.toString())
    })

本质上讲,fs.readFile()方法是对fs.read()方法的进一步封装,fs.readFile()方法可以方便的读取文件的全部内容。

相比fs.readFile()方法,使用fs.read()方法读取文件的全部内容可操作性要强很多。首先要用fs.stat判断文件的大小,然后使用fs.open()创建文件描述符,最后再使用fs.read()方法读取文件内容。

read 方法与 readFile 不同,一般针对于文件太大,无法一次性读取全部内容到缓存中或文件大小未知的情况,都是多次读取到 Buffer 中。

2.2 readFileSync的使用

readFileSyncreadFile基本一致,唯一的区别是readFileSync使用同步的方式读取数据,且读取的内容通过返回值获取。

具体语法:fs.readFileSync(path[, options]),参数具体含义同上。在使用过程中,如果指定了 encoding 选项,则此函数返回字符串。 否则,返回 buffer

let data = fs.readFileSync('input.txt', "utf-8");
console.log("同步读取:" + data);

3.文件写入fs.writeFile

fs.writeFile(filename,data,[options],callback)

文件写入操作

  1. 第一个必选参数 filename ,表示读取的文件名
  2. 第二个参数要写的数据
  3. 第三个参数 option 是一个对象
//创建: writeFile(文件名,写入内容,配置参数,回调函数) 异步
//配置参数:
/*
* a :追加
* w :写入
* r :读取
* */
fs.writeFile("2.txt","我是2.txt",{flag:"a"},function (err) {
    if(err){
        console.log(err);
    }else {
        console.log("写入成功");
    }
})

// 追加写入
fs.appendFile("2.txt","我是追加的字符",function (err) {
    if(err){
      return  console.log(err);
    }else {
        console.log("追加成功");
    }
})

 4.拷贝文件-copyFile

 fs.copyFile(filenameA, filenameB,callback)

  1. 第一个参数原始文件名
  2. 第二个参数要拷贝到的文件名
// 将filePath文件内容拷贝到filePath1文件内容
fs.copyFileSync(filePath, filePath1);
let data = fs.readFileSync(filePath1, 'utf8');

console.log(data);

5.删除文件-unlink

 fs.unlink(filename, callback)

// -- 异步文件删除
fs.unlink(filePath,function(err){
	if(err) return;
});
// -- 同步删除文件
fs.unlinkSync(filePath,function(err){
    if(err) return;
});

6.文件打开-fs.open

fs.open(path,flags,[mode],callback)

fs.open(filePath,'r','0666',function(err,fd){
   console.log('emmm',fd); 
//返回的第二个参数为一个整数,表示打开文件返回的文件描述符,window中又称文件句柄
})

7.文件关闭-fs.close

fs.close(fd,callback)

// 注意文件描述符fd
fs.open(filePath, 'r', (err, fd) => {
  fs.close(fd, err => {
    console.log('关闭成功');// 关闭成功
  });
});

要先用fs.open来打开文件,然后才可以用fs.read去读,或者用fs.write去写文件,最后,你需要用fs.close去关掉文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿昊在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值