javascript – 如何在Node.js中读取非常大的(> 1GB)tar.gz文件?

我从来没有这样做,所以这可能是一个真正的基础,但我以为我会问.

在Node.js中读取一个非常大的文件的正确方法是什么?说文件太大,无法一次读取.也可以说这个文件可以是.zip或.tar.gz格式.

一个问题是,最好先解压缩文件并将其保存到磁盘(我现在在Mac上使用Stuffit来执行),然后使用该文件?或者你可以直接从压缩的.zip或.tar.gz版本中读取IO流?我想你需要知道压缩文件内容的格式,所以你可能需要解压缩(只是发现这个.tar.gz文件实际上是一个.dat文件)…

那么主要的问题是,如何在Node.js中读取这个大文件?说这是一个1GB的XML文件,我应该在哪里开始解析它? (不,如何解析XML,但是如果你逐行阅读大文件,那么你如何解析像需要知道前一行的上下文的XML).

我已经看到了fs.createReadStream,但我害怕混乱,不想爆炸我的电脑.只要找正确方向的指针.

解决方法

内置的 zlib模块用于流解压缩,sax用于流XML解析
var fs = require('fs');
var zlib = require('zlib');
var sax = require('sax');

var saxStream = sax.createStream();
// add your xml handlers here

fs.createReadStream('large.xml.gz').pipe(zlib.createUnzip()).pipe(saxStream);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...