Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将长字符串写入文件(节点js)_Node.js - Fatal编程技术网

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

Node.js 将长字符串写入文件(节点js),node.js,Node.js,我有一个长度为1.69亿个字符的字符串,我需要将其写入文件,然后从另一个进程读取 我读过WriteStream和ReadStream,但是在没有“pipe”方法的情况下,如何将字符串写入文件 创建写流是个好主意。您可以这样使用它: var fs = require('fs'); var wstream = fs.createWriteStream('myOutput.txt'); wstream.write('Hello world!\n'); wstream.write('Another li

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


我读过WriteStream和ReadStream,但是在没有“pipe”方法的情况下,如何将字符串写入文件

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

var fs = require('fs');
var wstream = fs.createWriteStream('myOutput.txt');
wstream.write('Hello world!\n');
wstream.write('Another line\n');
wstream.end();
您可以根据需要调用编写任意多的时间,使用1600万字符字符串的一部分。一旦完成文件的编写,就可以创建一个读取流来读取文件的块

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

更新:根据评论中的要求,我用一个示例来更新,以便在运行时将流传送到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();

这将创建一个gz文件,其中只有一个同名文件(末尾没有.gz)。

如果您希望编写所谓的阻塞过程,例如阻止您执行其他操作的过程,异步处理该过程是最好的解决方案(以及为什么node.js擅长解决这些类型的问题)。因此,请避免使用具有
fs.*Sync
的方法,因为这将是一种同步方法。
fs.writeFile
是我认为您需要的。

这可能会解决您的问题

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);
请点击链接了解更多详细信息

非常感谢!我成功地让它工作了……也许你可以解释一下我在上面添加的评论?谢谢。这很有效,但我还有一个问题想听听你的意见。文件大小为169Mb,压缩后只有4Mb。有没有办法一开始就将压缩版本写入我的文件系统?是的,你可以使用内部节点。js zip功能。我更新了答案来展示一个例子。非常感谢!我成功地让它工作了…也许你能对我上面添加的评论有所帮助?