gpt4 book ai didi

node.js - 通过 Snappy 检查文件是否被压缩

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:46 24 4
gpt4 key购买 nike

我正在尝试测试文本是否通过 Snappy 进行压缩。我正在使用 Node.JS https://github.com/kesla/node-snappy图书馆。

归功于此answer获取有关读取文件的帮助。

$cat Decompress.js 
var snappy = require('snappy');
var fs = require('fs');

var filename = './snappy_compressed_docs/snappy_compressed_file'

fs.readFile(filename, 'utf8', function(err, data) {
if (err) throw err;
console.log("done printing data. 'typeof data':", typeof data);

console.log("snappy: ", snappy);

snappy.isValidCompressed(data, function(e, result) {
if(e) { console.log("error!", e); throw e; }
console.log("snappy.isValidCompressed:", result);
});
});

这是我得到的:

$node Decompress.js 
done printing data. 'typeof data': string
snappy: { compress: [Function],
isValidCompressed: [Function: isValidCompressed],
uncompress: [Function] }
Assertion failed: (obj->HasIndexedPropertiesInExternalArrayData()),
function Length, file ../src/node_buffer.cc, line 115.
Abort trap: 6

断言失败...部分发生了什么?

最佳答案

这里的问题是 isValidCompressed 需要一个缓冲区,而不是一个字符串。

根据失败的断言,我们可以看到我们正在“外部”数组数据中寻找奇怪的属性,这意味着某个地方正在期待比 JavaScript 字符串更原始的东西。如果我们看一下node-snappy的isValidCompressed bindings ,我们看到它将输入数据视为 node::Buffer。由于 typeof data 为我们提供了 string,因此我们可能没有正确的数据类型。

这里的解决方案是将 'utf8' 参数删除到 readFile,这为我们提供了原始缓冲区数据,而不是尝试将其转换为字符串。

关于node.js - 通过 Snappy 检查文件是否被压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28593713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com