Node.js进行文件读取与复制的系统总结

 更新时间:2025年04月17日 09:50:32   作者:傻小胖  
这篇文章主要为大家详细介绍了Node.js中文件读取与复制相关内容的系统总结,包括 同步读取,异步读取,复制操作等,有需要的小伙伴可以跟随小编一起了解下

Node.js 文件读取与复制相关内容的系统总结,包括 同步读取、异步读取、流式读取、复制操作、两者对比及内存测试。

一、Node.js 文件读取方式总结

Node.js 使用 fs(文件系统)模块进行文件操作:

1.同步读取(Blocking)

const fs = require('fs');
const data = fs.readFileSync('file.txt', 'utf-8');
console.log(data);

✅ 优点:逻辑简单,适合初始化配置、命令行工具等无需并发场景。

❌缺点:阻塞线程,读取大文件会卡住整个应用。

当然可以!下面是一个使用 Node.js 同步方式进行文件复制的完整例子,先同步读取文件内容,再同步写入到目标文件。

示例:使用 fs.readFileSync + fs.writeFileSync 实现文件复制

const fs = require('fs');

try {
  // 同步读取源文件内容
  const data = fs.readFileSync('source.txt', 'utf-8');

  // 同步写入到目标文件
  fs.writeFileSync('target.txt', data);

  console.log('文件复制成功 ✅');
} catch (err) {
  console.error('复制失败 ❌', err);
}

说明:

  • fs.readFileSync(path, encoding):阻塞方式读取文件内容
  • fs.writeFileSync(path, data):阻塞方式将内容写入文件
  • 适合小型文本文件复制(例如:配置文件、日志等)

注意:

会阻塞事件循环,若文件大或复制频繁,不适合用在服务端生产环境。

大文件建议使用流式复制方式。

2. 异步读取(Non-blocking)

const fs = require('fs');
fs.readFile('file.txt', 'utf-8', (err, data) => {
  if (err) throw err;
  console.log(data);
});
  • ✅ 优点:非阻塞、适合高并发,不会卡住主线程。
  • ❌缺点:逻辑较复杂,需使用回调、Promise 或 async/await。

3. 流式读取(Stream)

const fs = require('fs');
const readStream = fs.createReadStream('file.txt', 'utf-8');

readStream.on('data', chunk => {
  console.log('读取块:', chunk);
});

readStream.on('end', () => {
  console.log('读取完成');
});
  • ✅ 优点:适合读取大文件、低内存消耗
  • ❌缺点:实现复杂,处理逻辑需分块处理。

二、读取场景对比

方式适合场景特点
同步读取小文件、本地 CLI 工具等简单,阻塞线程
异步读取Web 服务、文件上传非阻塞,高性能
流式读取视频、大型日志、备份等节省内存,分块

三、Node.js 文件复制方式

1. 同步复制

const fs = require('fs');
fs.copyFileSync('source.txt', 'target.txt');

✅ 简单,适合少量小文件。

❌阻塞线程,大量并发时不可用。

2. 流式复制(推荐)

const fs = require('fs');
const readStream = fs.createReadStream('source.txt');
const writeStream = fs.createWriteStream('target.txt');

readStream.pipe(writeStream);

✅ 非阻塞,适合大文件。

✅ 边读边写,内存占用低。

❌ 无法轻松控制复制进度或中断。

四、复制方式对比

方法内存占用性能使用场景
同步复制小型项目、工具类
流式复制服务端、大文件

五、内存占用测试示例

可以通过 process.memoryUsage() 查看 Node.js 内存使用:

console.log(process.memoryUsage());

示例:对比读取一个 500MB 文件时的内存变化:

// 流式读取内存较低
const stream = fs.createReadStream('bigfile.txt');
stream.on('data', chunk => {
  console.log(process.memoryUsage().heapUsed);
});

// readFileSync 读取整个文件占用大
const content = fs.readFileSync('bigfile.txt');
console.log(process.memoryUsage().heapUsed);

总结重点

功能同步异步流式
阻塞✅ 是❌ 否❌ 否
内存消耗❌ 高⚠️ 中✅ 低
实现复杂度✅ 简单⚠️ 中等❌ 高
适合场景启动、工具Web 服务大文件处理

到此这篇关于Node.js进行文件读取与复制的系统总结的文章就介绍到这了,更多相关Node.js文件读取与复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • node+axios实现下载外网文件到本地

    node+axios实现下载外网文件到本地

    这篇文章主要为大家介绍了node+axios实现下载外网文件到本地示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 关于Node.js中频繁修改代码重启服务器的问题

    关于Node.js中频繁修改代码重启服务器的问题

    这篇文章主要介绍了关于Node.js中频繁修改代码重启服务器的问题,本文给大家分享解决办法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • node pnpm修改默认包的存储路径(操作方法)

    node pnpm修改默认包的存储路径(操作方法)

    PNPM是一个新的包管理工具,也是NPM的另一个替代方案,与NPM不同,PNPM使用符号链接(symlink)而不是复制文件来安装包,这篇文章主要介绍了node pnpm修改默认包的存储路径,需要的朋友可以参考下
    2024-05-05
  • node.js中npm包管理工具用法分析

    node.js中npm包管理工具用法分析

    这篇文章主要介绍了node.js中npm包管理工具用法,结合实例形式分析了node.js中npm包管理工具查看、安装、更新、卸载等相关操作技巧与注意事项,需要的朋友可以参考下
    2020-02-02
  • node.js利用express自动搭建项目的全过程

    node.js利用express自动搭建项目的全过程

    这篇文章主要给大家介绍了关于node.js利用express自动搭建项目的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详解nodejs 文本操作模块-fs模块(二)

    详解nodejs 文本操作模块-fs模块(二)

    这篇文章主要介绍了详解nodejs 文本操作模块-fs模块(二),主要包括文件的读写操作,有兴趣的可以了解一下。
    2016-12-12
  • 手把手教你用Node.js爬虫爬取网站数据的方法

    手把手教你用Node.js爬虫爬取网站数据的方法

    这篇文章主要介绍了手把手教你用Node.js爬虫爬取网站数据,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Express中全局中间件与局部中间件的使用

    Express中全局中间件与局部中间件的使用

    本文介绍了Express框架中的全局中间件与局部中间件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 使用NVM管理Node版本的详细教程

    使用NVM管理Node版本的详细教程

    Node Version Manager(NVM)是一个非常流行的工具,用于在同一个系统上管理多个 Node.js 版本,NVM 允许你安装、使用和切换不同的 Node.js 版本,这对于开发人员来说非常有用,本文给大家介绍了使用NVM管理Node版本的详细教程,需要的朋友可以参考下
    2025-02-02
  • autojs的Node.js正确退出脚本示例

    autojs的Node.js正确退出脚本示例

    这篇文章主要为大家介绍了autojs的Node.js正确退出脚本示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论