it编程 > 前端脚本 > Node.js

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

3人参与 2025-04-24 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);
}

说明:

注意:

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

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

2. 异步读取(non-blocking)

const fs = require('fs');
fs.readfile('file.txt', 'utf-8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

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文件读取与复制内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

使用Node.js实现GitHub登录功能

04-24

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

04-24

nvm安装指定版本node失败的解决方法

04-24

Node.js net模块详解(含类、方法、事件)

04-24

使用Node.js获取电脑配置信息的实现方法(CPU型号、内存大小、磁盘类型等)

04-24

使用Node.js制作图片上传服务的详细教程

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论