Node.js fs模块文件读写与目录操作详解

作者:夜航船时间:2026-10-22 07:59:58浏览:419

本文详细介绍Node.js中fs核心模块的文件与目录操作方法。涵盖同步与异步读写文件的区别及适用场景,重点解析大文件处理策略,包括使用Stream流进行分流读取。通过具体代码实例演示文件拷贝、存在性判断(existsSync)、文件类型检测(stat)以及文件夹创建与删除(rmdir、unlink)等常见操作,帮助开发者掌握Node.js文件系统编程基础。

Node.js fs模块概述与引入

在Node.js开发环境中,fs(filesystem)是处理文件系统操作的核心内置模块。

该模块提供了丰富的API,用于执行常见的文件系统任务。

其主要功能包括实现文件的读写操作以及对目录结构的增删改查。

fs模块的设计特点是同步和异步API共存,但在实际开发中,推荐优先使用异步方法以避免阻塞事件循环。

需要注意的是,fs.readFile方法无法读取超过运行内存大小的文件;对于体积较大的文件,不应使用此方法,而应采用其他策略。

针对大文件处理,推荐使用Stream(流)机制进行分流读取,以优化内存使用并提高处理效率。

在使用fs模块的功能前,首先需要引入该模块。

通过Node.js的模块加载语法引入:let fs=require('fs')。

文件读写操作详解

接下来介绍同步方式读取文件的操作流程。

使用fs.readFileSync方法,语法为:fs.readFileSync('路径', 'utf8')。

具体示例代码为:let result=fs.readFileSync('./1.txt','utf8');。

异步方式读取文件时,需通过回调函数的第一个参数err来捕获可能发生的错误。

基本语法结构为:fs.readFile('路径', 'utf8', function(){})。

完整示例代码如下: fs.readFile('./name.txt','utf8',function(err,data){ if(err){ console.log(err) }else{ console.log(data) } })

同步写入文件的操作方式如下。

使用fs.writeFileSync方法,语法为:fs.writeFileSync("路径", 写入的数据)。

具体示例代码为:fs.writeFileSync("./1.txt",JSON.stringify({name:1}))。

异步写入文件的方法及其回调处理机制。

基本语法结构为:fs.writeFile('路径', 写入的数据, callback)。

具体示例代码如下: fs.writeFile('./1.txt','aaaaa',function (err) { if(err){ console.log(err); } })

下面通过一个具体的实例来演示如何结合读写操作实现文件拷贝功能。

同步与异步文件拷贝实例


let fs=require("fs");
//同步拷贝
function copySync(source,target){
//同步读取
let result=fs.readFileSync(source,'utf8');
//同步写入
fs.writeFileSync(target,result);
}
copySync("./age.txt",'./1.txt');

首先展示异步拷贝的实现逻辑。


function copy(sourse,target,callback){
//异步读取
fs.readFile(sourse,'utf8',function(err,data){
if(err){
return callback(err)
}else{
//异步写入
fs.writeFile(target,data,callback)
}
});
};
copy('./name.txt','./ss.txt',function(err){
if(err) return console.log(err);
console.log('拷贝成功')
})

文件状态检测与目录管理

在操作文件前,通常需要判断指定路径的文件或目录是否存在。

可以使用fs.existsSync方法,语法为:fs.existsSync('文件的路径')。

此外,stat方法可用于获取文件的详细状态信息。

调用语法为:fs.stat('文件路径',function (err,stat) {。

通过返回的stat对象,可以使用stat.isDirectory判断是否为文件夹,使用stat.isFile判断是否为文件。

})

接下来介绍如何删除文件夹的操作。

使用fs.rmdir方法,语法为:fs.rmdir('文件夹路径', function(){})。

随后介绍如何删除单个文件。

使用fs.unlink方法,语法为:fs.unlink('文件路径', function(){})。

结合存在性判断,可以构建更安全的文件删除逻辑。

文件删除与递归创建文件夹


if(fs.existsSync('./b')){
fs.stat('./b',function (err,stat) {
//stat中的time是用来做服务器缓存
//stat.isDirectory看是不是文件夹 stat.isFile看是不是文件
if(stat.isDirectory()){
//删除文件夹
fs.rmdir('./b',function(){})
}else{
//删除文件
fs.unlink('./b',function(){});
}
})
}

最后,利用递归算法实现文件夹的逐级创建功能。


function md(url) {
  let paths=url.split('/'); //将a/b/c拆分成数组['a','b','c']
  let index=0;
  function make(path){
    if(index===paths.length+1){ // 如果到终点,停止递归
      return false;
    }
    if(!fs.existsSync(path)){ //不存在
      //创建文件夹
      fs.mkdir(path,function () {
        make(paths.slice(0,++index).join('/'))
      })
    }else{ //存在
      make(paths.slice(0,++index).join('/'))
    }
  }
  make(paths[index++]) //先取出第一个
}
md('a/b/c/d');

以上这篇基于node.js的fs核心模块读写文件操作(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

作者最新文章