xz
1.0.0
這個Go語言包支援xz壓縮流的讀寫。它還包括用於壓縮和解壓縮資料的 gxz 命令。該套件完全用 Go 編寫,不依賴任何 C 程式碼。
該軟體包目前正在開發中。可能存在錯誤且 API 被認為不穩定。目前,該軟體包在壓縮速度和大小方面無法與 xz 工具競爭。那裡的演算法已經開發了很長時間並且經過了高度優化。然而,計劃中有許多改進,我對並行壓縮和解壓縮非常樂觀。敬請關注!
以下範例程式展示如何使用 API。
package main
import (
"bytes"
"io"
"log"
"os"
"github.com/ulikunitz/xz"
)
func main () {
const text = "The quick brown fox jumps over the lazy dog. n "
var buf bytes. Buffer
// compress text
w , err := xz . NewWriter ( & buf )
if err != nil {
log . Fatalf ( "xz.NewWriter error %s" , err )
}
if _ , err := io . WriteString ( w , text ); err != nil {
log . Fatalf ( "WriteString error %s" , err )
}
if err := w . Close (); err != nil {
log . Fatalf ( "w.Close error %s" , err )
}
// decompress buffer and write output to stdout
r , err := xz . NewReader ( & buf )
if err != nil {
log . Fatalf ( "NewReader error %s" , err )
}
if _ , err = io . Copy ( os . Stdout , r ); err != nil {
log . Fatalf ( "io.Copy error %s" , err )
}
}
您可以在 pkg.go.dev 找到完整文件。
該軟體包包括用於壓縮和解壓縮的 gxz 命令列公用程式。
使用以下命令進行安裝:
$ go get github.com/ulikunitz/xz/cmd/gxz
要測試它,請呼叫以下命令。
$ gxz bigfile
一段時間後,一個小得多的檔案 bigfile.xz 將取代 bigfile。要解壓縮它,請使用以下命令。
$ gxz -d bigfile.xz
安全策略記錄在 SECURITY.md 中。
該軟體不受對原始 xz 實現 CVE-2024-3094 的供應鏈攻擊的影響。此實作不會與原始 xz 實作共用任何文件,且未經審查不會接受任何修補程式或拉取請求。
此專案的所有安全建議均發佈在 github.com/ulikunitz/xz/security/advisories 下。