Gzip File Compression in Go with the "compress/gzip" Package
File compression is often essential for optimizing data transfer and storage. In Go, the "compress/gzip" package provides a convenient solution for gzip compression. Here's how to use this package:
Compressing a File
import ( "bytes" "compress/gzip" "io" "os" ) func compressFile(sourceFile, compressedFile string) error { input, err := os.ReadFile(sourceFile) if err != nil { return err } var b bytes.Buffer w := gzip.NewWriter(&b) if _, err := w.Write(input); err != nil { return err } if err := w.Close(); err != nil { return err } if err := os.WriteFile(compressedFile, b.Bytes(), 0644); err != nil { return err } return nil }
Reading a Compressed File Directly
To read a compressed file directly, you can use the gzip.NewReader function:
func readCompressedFile(compressedFile string) error { f, err := os.Open(compressedFile) if err != nil { return err } defer f.Close() r, err := gzip.NewReader(f) if err != nil { return err } defer r.Close() if _, err := io.Copy(os.Stdout, r); err != nil { return err } return nil }
By using these functions, you can easily compress and decompress files in Go, allowing you to optimize data transfer and storage efficiently.
The above is the detailed content of How Can I Use Go's 'compress/gzip' Package for Efficient File Compression and Decompression?. For more information, please follow other related articles on the PHP Chinese website!