我在Scala中通過執行python挑戰系列來懲罰自己。在Scala中處理BZIP字符串/文件
現在,挑戰之一是讀入一個已經使用bzip算法壓縮並輸出結果的字符串。
BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084
現在,經過一番挖掘它看起來好像沒有了bZIP結構處理的標準Java庫,但也有一些是在Apache Ant項目,that this guy欣然取出用作單獨的庫。
的事情是,我似乎無法得到它與下面的代碼的工作,它只是掛在斯卡拉REPL和JVM在100%的CPU使用率
馬克塞斯這是我的代碼m試圖...
import java.io.{ByteArrayInputStream}
import org.apache.tools.bzip2.{CBZip2InputStream}
import org.apache.commons.io.{IOUtils}
object ChallengeEight extends Application {
val inputString = """BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084"""
val inputStream = new ByteArrayInputStream(inputString.getBytes("UTF-8")) //convert string to inputstream
inputStream.skip(2) //skip the 'BZ' part at the start
val bzipInputStream = new CBZip2InputStream(inputStream) //hangs here....
val result = IOUtils.toString(bzipInputStream, "UTF-8");
println(result)
}
任何人有任何想法?或者CBZip2InputStream
類希望在一個已被壓縮爲bzip2
的文件中找到一些額外的字節?
任何幫助,將不勝感激
編輯根據記錄,這是Python的解決方案
import bz2
un = "BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!" \
"\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084"
print [bz2.decompress(elt) for elt in (un)]
我的標準行爲在這樣的情況下:按Ctrl + F8,按住Shift + F9,F7,F7,F7,F7 ....下降到奇異點:) – tenshi 2011-03-01 20:16:22