แพ็คเกจภาษา 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