如何关闭可读流(结束之前)?

2023-12-08

如何关闭一个可读流在 Node.js 中?

var input = fs.createReadStream('lines.txt');

input.on('data', function(data) {
   // after closing the stream, this will not
   // be called again

   if (gotFirstLine) {
      // close this stream and continue the
      // instructions from this if
      console.log("Closed.");
   }
});

这会比:

input.on('data', function(data) {
   if (isEnded) { return; }

   if (gotFirstLine) {
      isEnded = true;
      console.log("Closed.");
   }
});

但这不会停止阅读过程......


Edit:好消息!从 Node.js 8.0.0 开始readable.destroy正式可用:https://nodejs.org/api/stream.html#stream_read_destroy_error

ReadStream.destroy

您可以致电ReadStream.destroy随时发挥作用。

var fs = require("fs");

var readStream = fs.createReadStream("lines.txt");
readStream
    .on("data", function (chunk) {
        console.log(chunk);
        readStream.destroy();
    })
    .on("end", function () {
        // This may not been called since we are destroying the stream
        // the first time "data" event is received
        console.log("All the data in the file has been read");
    })
    .on("close", function (err) {
        console.log("Stream has been destroyed and file has been closed");
    });

公共职能ReadStream.destroy没有记录(Node.js v0.12.2),但你可以看看GitHub 上的源代码 (2012 年 10 月 5 日提交).

The destroy函数内部标记ReadStream实例被销毁并调用close函数来释放文件。

您可以收听关闭事件确切地知道文件何时关闭。这结束事件除非数据完全消耗,否则不会触发。


请注意,destroy(以及close) 函数特定于fs.ReadStream。没有通用的部分流.可读“界面”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何关闭可读流(结束之前)? 的相关文章

随机推荐

  • 如何修复 java.lang.arrayindexoutofboundsException: 0?

    我是新手java 谁能帮我解决这个错误arrayindexoutofboundsexception public class Minesweeper public static void main String args int M Int
  • 使用刷新令牌进行 C#sharp 身份验证的 Google.Apis 客户端

    我正在使用适用于 NET 的新测试版 Google API 客户端库来加载多个用户的任务列表 它被归类为 已安装的应用程序 根据谷歌开发控制台 具有多个授权用户帐户 验证一个用户的身份非常简单 使用 google apis 但我不知道如何使
  • 访问复合数组元素 plpgsql

    我有一个用户定义的复合数据类型的数组 我需要对 plpgsql 函数中的数组元素进行一些操作 但我没有获得访问各个元素的正确语法 任何帮助表示赞赏 下面粘贴的是代码的简化版本 CREATE TYPE playz AS a integer b
  • bash 中具有算术比较行为的 if 语句

    我正在学习 bash 我注意到一些奇怪的东西我 还 无法解释 在学校我了解到 if 语句将 0 评估为真 将 1 评估为假 因此它可以与其他命令的状态代码一起使用 现在我的问题是 为什么会发生这种情况 echo 5 gt 2 prints
  • 低落和昂扬

    我是新来的C and OOP 当我有如下代码时 class Employee some code class Manager Employee some code 问题1 如果我有其他代码可以执行此操作 Manager mgr new Ma
  • Java fxml 应用程序无法正常工作 - 找不到符号错误

    我从下载了一个java fxml应用程序https github com HassanAlthaf AlarmApplication当我尝试运行它时 从 MainView java 类中收到 找不到符号 错误 这是 Mainview jav
  • 带“+”的类名

    我正在 Xcode 中开发一个 iOS 项目 我看到一些类的名称带有 例如 TableViewController TableView h然后该类被命名为 interface RKTableViewController TableView
  • 将数据透视表写入 Excel 文件时遇到问题

    我正在使用 pandas openpyxl 处理 Excel 文件 然后创建一个数据透视表以添加到当前工作簿中的新工作表 当我执行代码时 会创建新工作表 但数据透视表不会添加到工作表中 这是我的代码 worksheet2 workbook
  • MSVC项目中使用的Mingw静态库

    是否可以在 Visual Studio MSVC 项目中使用使用 mingw 编译的静态库 这两个项目都是 C 我还没有找到明确的答案 请注意 我说的是静态库而不是 DLL 不 这是不可能的 因为ABI对于 c 来说不是标准的gcc的 AB
  • 使用python获取当月的最后一个星期四

    按照此answer我试图获取本月最后一个星期四的日期 但我的代码没有脱离循环 from datetime import datetime from dateutil relativedelta import relativedelta TH
  • 如何创建正确垃圾收集的自定义生成器类

    我正在尝试用 Python 编写一个类 其行为类似于生成器对象 特别是当它被垃圾收集时 close 被调用 这很重要 因为这意味着当生成器被中断时 我可以确保它会自行清理 例如关闭文件或释放锁 这是一些解释性代码 如果你中断一个生成器 那么
  • 已经购买了付费应用程序的客户在应用程序商店中通过应用内购买将其升级为免费应用程序时会怎样? [复制]

    这个问题在这里已经有答案了 我已经在现有的应用程序中实现了应用程序内购买 该应用程序目前在应用程序商店中作为付费应用程序提供 我想通过此应用程序内购买功能将此付费应用程序更新为免费应用程序 用户可以免费下载它 并且必须支付一些功能才能解锁它
  • 我需要做什么才能使 Excel 通过 HTTPS 访问 Web 查询?

    我正在尝试实现一个页面 允许 Excel 用户通过 Excel 提供的 Web 查询功能使用其提供的数据 只要我使用 HTTP 甚至 BASIC 用户身份验证也能工作 一切都运行得很好 一旦我将其切换到 HTTPS Excel 将不再下载数
  • 如何在张量流对象检测中仅检测特定类别的对象

    The 物体检测笔记本演示 如何models预训练于COCO数据集可用于检测测试图像上的物体 但是 笔记本中的模型会返回 COCO 集中所有类别的检测到对象的框 如何使用代码仅返回一种类别的对象的框 IE 我怎样才能获得模型确定的对象的盒子
  • Symfony 2 中多个帐户的 swiftmailer 配置

    我使用gmail发送邮件 所以我像这样配置 config yml swiftmailer transport mailer transport encryption mailer encryption auth mode mailer au
  • 使用 PHP 的 Google 地图 API 查找两个位置之间的距离

    在我当前的项目 一个送货系统 中 我有一个可用的送货司机列表 该列表显示在订单页面上 但我需要的是显示每次送货距客户地址的距离 距离应显示在每个驾驶员姓名旁边 有人知道我将如何解决这个问题吗 假设您需要行驶距离而不是直线距离 您可以使用路线
  • 具有不同返回类型的函数指针 C

    我了解 C 中的函数指针是什么以及如何使用它们 但是 我不知道如何拥有一个可以指向具有不同返回类型的函数的函数指针 这可能吗 我知道如何使用函数指针数组 但我只找到了不同参数的示例 而不是返回类型 C 如何将单个函数指针数组用于具有可变参数
  • 为什么 C 不运行 unsigned int 与负值的比较?

    考虑这个 C 代码 include stdio h int main void int count 5 unsigned int i for i count i gt 1 i printf d n i return 0 我的观察 问题 循环
  • UnicodeEncodeError:“ascii”编解码器无法编码字符?

    我试图通过正则表达式传递大的随机 html 字符串 但我的 Python 2 6 脚本对此感到窒息 UnicodeEncodeError ascii 编解码器无法对字符进行编码 我追溯到这个词末尾的商标上标 Protection 我不需要捕
  • 如何关闭可读流(结束之前)?

    如何关闭一个可读流在 Node js 中 var input fs createReadStream lines txt input on data function data after closing the stream this w