Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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 检查文件是否通过Snappy压缩_Node.js_Snappy - Fatal编程技术网

Node.js 检查文件是否通过Snappy压缩

Node.js 检查文件是否通过Snappy压缩,node.js,snappy,Node.js,Snappy,我试图测试文本是否通过Snappy压缩。我正在使用Node.JS库 从文件中读取数据时的帮助归功于此 $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) {

我试图测试文本是否通过Snappy压缩。我正在使用Node.JS库

从文件中读取数据时的帮助归功于此

$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字符串更原始的属性。如果我们查看节点snappy,我们会看到它将其输入数据视为
node::Buffer
。由于
数据类型
为我们提供了
字符串
,我们可能没有正确的数据类型

这里的解决方案是将
'utf8'
参数放到
readFile
中,这会将数据作为原始缓冲区,而不是试图将其转换为字符串