如何在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.");
}
});
但这不会停止阅读过程…
调用input.close()
。它不在文档中,但是
https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/fs.js#L1597-L1620
显然可以完成这项工作:)它实际上所做的事情与您的相似isEnded
。
EDIT 2015-Apr-19 根据以下评论,并进行澄清和更新:
lib/fs.js
来看,它仍然可以在> 1.5年后使用。destroy()
更好的评论。fs
ReadStreams
,而不适用于通用Readable
至于通用解决方案:至少从我对文档的理解和快速浏览来看,它似乎并不存在_stream_readable.js
。
我的建议是将您的可读流置于 暂停
模式,至少防止上游数据源中的进一步处理。如文档中所述,不要忘记unpipe()
并删除所有data
事件监听器,以便pause()
实际上暂停
我正在窗口流上执行聚合,希望抑制早期聚合结果。我所说的早期结果是指在窗口结束前计算的结果,而不是那些在宽限期内发生的结果。因此,我想用时间戳抑制所有聚合结果 最小Kafka流拓扑示例: 因此,不是我的选择,因为我必须等到宽限期到期,这可能会很长。 根据KIP-328,使用
问题内容: 我想知道如果不手动关闭流,何时关闭。我的意思是,如果引用的范围不再存在,流将被关闭吗? 请考虑以下示例方案。 在这里,一旦完成流处理,我将退出,但是反过来将继续执行该程序的程序不会终止,而是继续进行其他操作。 我没有关闭溪流。一旦对A类的引用范围结束,它会自动关闭吗?(即何时结束)?GC会照顾吗?另外,我读到,一旦流程结束,流将关闭,并且系统释放为其他进程保留的所有资源。我们如何检查流
是否有任何soundio函数可以“关闭”或“停止”? (我可能会根据回答编辑或添加我的问题,现在我有太多的未知数,无法提出正确的问题。)
我正在接受LazyInitializationException错误,因为在myController中,当我读取Lazy collections会话时,该会话已经关闭。只要有请求,有没有办法打开它?作为OpenSessionInView?最好的方法是什么? 我使用的是Spring Boot 1.3.0版本
在使用Hibernate和Jpa的spring boot应用程序中,我需要在saveAll()之前关闭select,以提高高记录数的性能。 我找到了一个使用JPQL的方法,性能很好(在30s内删除+保存10k条记录),但我希望继续使用hibernate和JPA。 我的期望是,当我运行用Java编写的代码时,我必须删除一个表的所有记录,然后保存另一个表的所有记录。当我以经典的方式(deleteAll
问题内容: 我下载了新的JSch 0.1.53库, 并且JSch(sftp)下载任务不再起作用。此版本因函数抛出错误而失败。 我的旧jsch.jar(2011-10-06)在同一主机上运行正常,也许我缺少新的配置道具? 这是一个广泛的JSch日志记录,指示发生了什么。 我还有一个非常旧的Jsch.jar(2011-10-06),其中下载任务正常运行,这是一个日志。我要升级的原因是文件传输速度非常慢