5

Inflater を使用する Java バックエンドがあります。Node.js 経由でデータをフィードしたいと考えています。

Deflater クラスに相当するものはありますか?

編集:少し明確にする必要があります。https://github.com/dankogai/js-deflateを使用してから、結果を base64 エンコードして、非常に単純な Java プログラムに渡し、base64 でデコードして膨張させようとしました (バックエンドの単純なエミュレーションを作成します)。 、しかし、例外が発生し続けます:

java.util.zip.DataFormatException: unknown compression method
    at java.util.zip.Inflater.inflateBytes(Native Method)
    at java.util.zip.Inflater.inflate(Unknown Source)
    at java.util.zip.Inflater.inflate(Unknown Source)

また、Base64 エンコーディング プロセスが両端で正しく機能していることもわかっています。

また、Java バックエンドを変更できないことにも注意してください。

4

3 に答える 3

1

https://github.com/waveto/node-compressで遊んでみてください。

var compress=require("./compress");
var sys=require("sys");
var posix=require("posix");

// Create gzip stream
var gzip=new compress.Gzip;
gzip.init();

// Pump data to be compressed
var gzdata1 = gzip.deflate("My data that needs ", "binary"); 
sys.puts("Compressed size : "+gzdata1.length);

var gzdata2 = gzip.deflate("to be compressed. 01234567890.", "binary"); 
sys.puts("Compressed size : "+gzdata2.length);

var gzdata3=gzip.end();
sys.puts("Last bit : "+gzdata3.length);

// Take the output stream, and chop it up into two
var gzdata = gzdata1+gzdata2+gzdata3;
sys.puts("Total compressed size : "+gzdata.length);
var d1 = gzdata.substr(0, 25);
var d2 = gzdata.substr(25);

// Create gunzip stream to decode these
var gunzip = new compress.Gunzip;
gunzip.init();
var data1 = gunzip.inflate(d1, "binary");
var data2 = gunzip.inflate(d2, "binary");
var data3 = gunzip.end();

sys.puts(data1+data2+data3);

これは正常に動作しますが、node_pcap で遊んだため、いくつかの問題が発生しました。これは良いスタートになると思います。

于 2011-03-15T11:27:00.320 に答える
0

代わりに、Deflator/Inflator AFAIK に基づく GZIPInput/OutputStream を使用できます。Inflator/Deflator は Java 固有です。

于 2011-02-13T18:27:48.630 に答える
0

やっと思いついた。zlibこれを行うには、Node.jsのライブラリを使用できます。例えば:

var zip = require('zlib');
zip.createDeflate({
    level: zip.Z_DEFAULT_COMPRESSION,
    windowBits: zip.MAX_WBITS
});

また

zip.deflate(buf,callback);
于 2011-12-21T21:57:15.987 に答える