第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何提取 .jar 文件

如何提取 .jar 文件

Go
瀟湘沐 2023-06-12 16:54:03
我喜歡在 Go 中提取一個(gè) .jar 文件。我嘗試了不同的方法來構(gòu)建庫,但沒有成功。在 buff 中是我嘗試分析的 JAR 的一小部分。錯(cuò)誤也發(fā)生在完整的字節(jié)數(shù)組上。艦隊(duì):buff := []byte{80, 75, 3, 4, 10, 0, 8, 8, 8, 0, 239, 77, 77, 78,  147,98, 6, 159, 116, 0, 0, 0, 132, 0, 0, 0, 20, 0, 0, 0, 77, 69, 84, 65, 45, 73, 78, 70, 47, 77, 65, 78, 73, 70, 69, 83, 84, 46, 77, 70, 37, 140, 49, 14, 194, 48, 12, 0, 247, 72, 249, 131, 63, 16, 43, 128, 88, 178, 181, 221, 144, 178, 178, 91, 196, 64, 32, 184, 81, 28, 42, 248, 61,5, 214, 187, 211, 69, 146, 124, 102, 237}  b := bytes.NewReader(buff)zr := flate.NewReader(b)if _, err := io.Copy(os.Stdout, zr); err != nil {    log.Fatal(err)}if err := zr.Close(); err != nil {    log.Fatal(err)}fmt.Println()錯(cuò)誤:平坦:偏移量 5 之前的損壞輸入zlib:b := bytes.NewReader(buff)r, err := zlib.NewReader(b)if err != nil {    panic(err)}io.Copy(os.Stdout, r)r.Close()錯(cuò)誤:zlib:無效標(biāo)頭維基百科說 JAR 是 zip 的擴(kuò)展,普通的壓縮程序可以解壓它們。任何想法如何讓這個(gè)工作?喜歡添加工作標(biāo)題還是我的代碼錯(cuò)誤?
查看完整描述

1 回答

?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊

JAR 文件是zip 檔案,而不僅僅是 zlib 或 flate 壓縮數(shù)據(jù)。

所以使用archive/zip包來正確處理它們。例如,要列出 JAR 文件中的文件:

r, err := zip.NewReader(bytes.NewReader(buff), int64(len(buff)))

if err != nil {

? ? panic(err)

}


for _, f := range r.File {

? ? fmt.Println("Found in jar:", f.Name)

}

當(dāng)然你必須提供完整的文件內(nèi)容,否則你很可能在獲取zip.Reader.

如果您還想打印存檔中文件的內(nèi)容,可以這樣做:

for _, f := range r.File {

? ? fmt.Printf("Found in jar: %s, contents:\n", f.Name)

? ? rc, err := f.Open()

? ? if err != nil {

? ? ? ? log.Fatal(err)

? ? }

? ? _, err = io.CopyN(os.Stdout, rc, int64(f.UncompressedSize64))

? ? if err != nil {

? ? ? ? log.Fatal(err)

? ? }

? ? rc.Close()

? ? fmt.Println()

}

這是一個(gè) JAR 文件,其中包含一個(gè)名為 的文件a.txt,其內(nèi)容為"Hello Gopher":


buff := []byte{80, 75, 3, 4, 10, 0, 0, 0, 0, 0, 91, 109, 103, 78, 132, 225, 60, 127, 13, 0, 0, 0, 13, 0, 0, 0, 5, 0, 28, 0, 97, 46, 116, 120, 116, 85, 84, 9, 0, 3, 206, 17, 129, 92, 219, 17, 129, 92, 117, 120, 11, 0, 1, 4, 232, 3, 0, 0, 4, 232, 3, 0, 0, 72, 101, 108, 108, 111, 32, 71, 111, 112, 104, 101, 114, 10, 80, 75, 1, 2, 30, 3, 10, 0, 0, 0, 0, 0, 91, 109, 103, 78, 132, 225, 60, 127, 13, 0, 0, 0, 13, 0, 0, 0, 5, 0, 24, 0, 0, 0, 0, 0, 1, 0, 0, 0, 164, 129, 0, 0, 0, 0, 97, 46, 116, 120, 116, 85, 84, 5, 0, 3, 206, 17, 129, 92, 117, 120, 11, 0, 1, 4, 232, 3, 0, 0, 4, 232, 3, 0, 0, 80, 75, 5, 6, 0, 0, 0, 0, 1, 0, 1, 0, 75, 0, 0, 0, 76, 0, 0, 0, 0, 0}

在此緩沖區(qū)上運(yùn)行上述代碼,輸出為(在Go Playground上嘗試):


Found in jar: a.txt, contents:

Hello Gopher


查看完整回答
反對 回復(fù) 2023-06-12
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)