将长字符串写入文件(节点js)

时间:2015-06-09 14:03:37

标签: node.js

我有一个长度为1.69亿个字符的字符串,我需要将其写入文件然后从另一个进程读取。

我已经阅读过有关WriteStream和ReadStream的内容,但是如果没有方法'pipe',如何将字符串写入文件?

3 个答案:

答案 0 :(得分:9)

创建写入流是个好主意。您可以像这样使用它:

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

您可以根据需要随时拨打,其中包含1600万个字符串的部分内容。完成文件编写后,您可以创建一个读取流来读取文件的块。

然而,1600万个字符并不是那么多,我会说你可以一次读写它并将整个文件保存在内存中。

更新:根据评论中的要求,我更新了一个示例,将流管道即时压缩:

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();

这将创建一个 gz 文件,在里面只有一个同名文件(最后没有 .gz )。

答案 1 :(得分:2)

这可能会解决您的问题

var fs = require('fs');
var request = require('request');

var stream = request('http://i.imgur.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/

答案 2 :(得分:1)

如果您正在寻找所谓的阻止过程,例如阻止您做其他事情的事情,那么异步接近该过程是最佳解决方案(以及为什么node.js是好的解决这些类型的问题)。话虽如此,请避免使用fs.*Sync的方法,因为这将是同步方法。 fs.writeFile是我相信你正在寻找的。 Read the Docs