2013-02-26 5 views
1

Я искал байты в twitter через java Deflater и столкнулся с проблемами. Сначала выведите, затем код. Что я делаю неправильно здесь, и как я могу нормально обойти эти потоки?Не удалось выполнить круговое отключение через Deflater в Scala

Выход:

scala> new String(decompress(compress("face".getBytes))) 
(crazy output string of length 20) 

Код:

def compress(bytes: Array[Byte]): Array[Byte] = { 
    val deflater = new java.util.zip.Deflater 
    val baos = new ByteArrayOutputStream 
    val dos = new DeflaterOutputStream(baos, deflater) 
    dos.write(bytes) 
    baos.close 
    dos.finish 
    dos.close 
    baos.toByteArray 
    } 

    def decompress(bytes: Array[Byte]): Array[Byte] = { 
    val deflater = new java.util.zip.Deflater 
    val baos = new ByteArrayOutputStream(512) 
    val bytesIn = new ByteArrayInputStream(bytes) 
    val in = new DeflaterInputStream(bytesIn, deflater) 
    var go = true 
    while (go) { 
     val b = in.read 
     if (b == -1) 
     go = false 
     else 
     baos.write(b) 
    } 
    baos.close 
    in.close 
    baos.toByteArray 
    } 

ответ

3

Вы (повторно) Deflater -ную результат оригинального дефляции, когда вы должны быть Inflater -ную его ...

+0

Иисус, кричит. Благодаря :) –