热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Node.js流操作详解

本文介绍了如何在Node.js中使用流(Stream)进行数据读取与写入,包括创建可读流与可写流的基本方法,并提供了具体的代码示例。

在 Node.js 中,流是一种处理大量数据的有效方式,特别适用于读取或写入大文件,避免一次性加载整个文件到内存中导致资源耗尽。本文将通过两个示例来展示如何使用流进行基本的数据读取与写入。

1. 从文件中读取数据

下面的示例展示了如何从文件中读取数据并打印到控制台。

const fs = require('fs');
let data = '';
// 创建可读流
const readerStream = fs.createReadStream('input.txt');
// 设置编码为 UTF-8
readerStream.setEncoding('UTF8');
// 监听 data 事件,当有数据可读时触发
readerStream.on('data', (chunk) => {
data += chunk;
});
// 监听 end 事件,当所有数据被读取后触发
readerStream.on('end', () => {
console.log(data);
});
// 监听 error 事件,当读取过程中发生错误时触发
readerStream.on('error', (err) => {
console.error(err.stack);
});
console.log('程序执行完毕');

执行上述脚本的结果如下:

程序执行完毕
hello world in input.txt

2. 向文件中写入数据

接下来,我们将展示如何向文件中写入数据。

const fs = require('fs');
const data = 'test write data';
// 创建可写流,写入到文件 output.txt 中
const writerStream = fs.createWriteStream('output.txt');
// 使用 UTF-8 编码写入数据
writerStream.write(data, 'UTF8');
// 标记文件末尾
writerStream.end();
// 监听 finish 事件,当所有数据写入完成后触发
writerStream.on('finish', () => {
console.log('写入完成');
});
// 监听 error 事件,当写入过程中发生错误时触发
writerStream.on('error', (err) => {
console.error(err.stack);
});
console.log('程序执行完毕');

执行上述脚本的结果如下:

程序执行完毕
写入完成

推荐阅读
  • Node.js 入门指南(一)
    本文介绍了Node.js的安装步骤、如何创建第一个应用程序、NPM的基本使用以及处理回调函数的方法。通过实际操作示例,帮助初学者快速掌握Node.js的基础知识。 ... [详细]
  • 深入解析JavaScript中的require与import差异
    本文深入探讨了JavaScript中require与import的主要区别,并通过实际案例详细说明了它们的工作原理及应用场景,对于开发者理解和使用这两种模块加载方式具有重要指导意义。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置Node.js,包括从官方下载、编译安装到运行基本示例的全过程。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • 本文介绍了如何在 Node.js 中使用 `setDefaultEncoding` 方法为可写流设置默认编码,并提供了详细的语法说明和示例代码。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文详细介绍了 Node.js 中 Worker.isMainThread 属性的功能、用法及其实例代码,帮助开发者更好地理解和利用多线程技术。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 自 Node.js 6.3 版本起,调试功能已内置在核心模块中,无需额外安装 node-inspector 等工具。通过简单的命令即可启动调试模式,并利用 Chrome 浏览器进行高效的代码调试。 ... [详细]
  • This post discusses an issue encountered while using the @name annotation in documentation generation, specifically regarding nested class processing and unexpected output. ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
author-avatar
王尼玛的脑残粉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有