当前位置: 首页 > 面试题库 >

在Node.js中使用zlib压缩和解压缩数据

荆炳
2023-03-14
问题内容

有人可以向我解释zlib库在Nodejs中如何工作吗?

我对Node.js很陌生,还不确定如何使用缓冲区和流。

我的简单情况是一个字符串变量,我想将字符串压缩或解压缩(压缩或膨胀,gzip或gunzip等)到另一个字符串。

即(我希望它如何工作)

var zlib = require('zlib');
var str = "this is a test string to be zipped";
var zip = zlib.Deflate(str); // zip = [object Object]
var packed = zip.toString([encoding?]); // packed = "packedstringdata"
var unzipped = zlib.Inflate(packed); // unzipped = [object Object]
var newstr = unzipped.toString([again - encoding?]); // newstr = "this is a test string to be zipped";

感谢您的帮助:)


问题答案:

更新 :没意识到在节点0.5中有一个新的内置“ zlib”模块。我在下面的答案是针对第三方node-
zlib模块的
。将立即为内置版本更新答案。

更新2 :似乎内置的“
zlib”可能存在问题。该文档中的示例代码对我不起作用。生成的文件不可压缩(对于我来说,“文件结尾意外”失败)。另外,该模块的API并非特别适合您要尝试执行的操作。它更多地用于处理流而不是缓冲区,而node-
zlib模块具有更简单的API,更易于用于缓冲区。

使用第三方node-zlib模块进行放气和充气的示例:

$ node

> // Load zlib and create a buffer to compress
> var zlib = require('zlib');
> var input = new Buffer('lorem ipsum dolor sit amet', 'utf8')

> // What's 'input'?
> input
<Buffer 6c 6f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 73 69 74 20 61 6d 65 74>

> // Compress it
> zlib.deflate(input)
<SlowBuffer 78 9c cb c9 2f 4a cd 55 c8 2c 28 2e cd 55 48 c9 cf c9 2f 52 28 ce 2c 51 48 cc 4d 2d 01 00 87 15 09 e5>

> // Compress it and convert to utf8 string, just for the heck of it
> zlib.deflate(input).toString('utf8')
'x???/J?U?,(.?UH???/R(?,QH?M-\u0001\u0000?\u0015\t?'

> // Compress, then uncompress (get back what we started with)
> zlib.inflate(zlib.deflate(input))
<SlowBuffer 6c 6f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 73 69 74 20 61 6d 65 74>

> // Again, and convert back to our initial string
> zlib.inflate(zlib.deflate(input)).toString('utf8')
'lorem ipsum dolor sit amet'


 类似资料:
  • Stability: 2 - Stable zlib 模块提供通过 Gzip 和 Deflate/Inflate 实现的压缩功能,可以通过这样使用它 const zlib = require('zlib'); 压缩或者解压数据流(例如一个文件)通过zlib流将源数据流传输到目标流中来完成。 const gzip = zlib.createGzip(); const fs = require('f

  • null 在最近的更新中,解压库工作,但解包不工作。请跳到底部9月16日的更新。 我已经尝试了几个JavaScript库,但仍然无法使其工作: Pako:https://github.com/nodeca/pako null Imaya的zlib:https://github.com/imaya/zlib.js 错误: 仍然使用Imaya的zlib,结合这个堆栈溢出问题:解压缩javascript

  • 处理内存中的数据 # zlib_memory.py import zlib import binascii original_data = b'This is the original text.' print('Original :', len(original_data), original_data) compressed = zlib.compress(original_dat

  • 问题内容: 我知道这是一项容易的任务,但是更改代码后它停止工作,并且无法恢复!我实际上使用了两个函数来进行压缩和解压缩,尽管实际上它是“ jar”和“ unjar”,但这并没有太大的区别 任何帮助/建议吗? 创建JarFile时发生错误: 问题答案: 我不知道这是否是您的问题,但是通常最好在完成写入后关闭每个zip条目。 请参阅。 在显示的代码中,不会关闭邮政编码中的最后一个条目。您也不会显示关闭

  • 问题内容: 我在缓存层(redis)中放入了一些较大的JSON值,我认为它们可以使用一些压缩来稍微减少我的内存使用量。 您使用哪个node.js压缩模块?出于某种原因,joyent / node Modules Wiki 上列出的所有内容看起来都很肮脏-要么是404,没有超过一年的提交,很少有人在看,或者打开了内存泄漏的报告。 Snappy看起来不错,但我宁愿选择更轻便的东西。 我自然希望使用异步

  • 问题内容: Gzip格式文件(gzip例如,使用程序创建的文件)使用“放气”压缩算法,该压缩算法与zlib使用的压缩算法相同。但是,使用zlib膨胀gzip压缩文件时,该库将返回Z_DATA_ERROR。 如何使用zlib解压缩gzip文件? 问题答案: python zlib库支持: RFC 1950(zlib压缩格式) RFC 1951(deflate压缩格式) RFC 1952(gzip压缩