Golang は、開発者が効率的なアプリケーションを開発できるよう、多くの実用的なライブラリとクラス ライブラリを提供する強力なプログラミング言語です。その中でも、圧縮ファイルを処理する場合、Golang はファイルの圧縮と解凍を簡単に行うのに役立つ多くの便利なライブラリを提供します。
この記事では、Golang がファイルを解凍する方法を紹介します。
Golang 標準ライブラリの archive/tar および archive/zip パッケージは、tar および zip の圧縮と解凍を提供します。ファイルの機能。
archive/zip パッケージを使用して zip ファイルを解凍する方法の例を見てみましょう:
package main import ( "archive/zip" "fmt" "io" "os" ) func main() { zipReader, err := zip.OpenReader("example.zip") if err != nil { fmt.Println(err) os.Exit(1) } defer zipReader.Close() for _, file := range zipReader.File { fmt.Println("Extracting ", file.Name) dest, err := os.Create(file.Name) if err != nil { fmt.Println(err) os.Exit(1) } defer dest.Close() src, err := file.Open() if err != nil { fmt.Println(err) os.Exit(1) } defer src.Close() _, err = io.Copy(dest, src) if err != nil { fmt.Println(err) os.Exit(1) } } }
このコードを実行すると、サンプルの内容がすべて抽出されます。 .zip ファイルを作成して個別に保存します。現在のディレクトリ内の対応するファイルにコピーします。
同様に、archive/tar パッケージを使用すると、次のように tar ファイルを解凍できます。
package main import ( "fmt" "io" "os" "archive/tar" ) func main() { tarFile, err := os.Open("example.tar") if err != nil { fmt.Println(err) os.Exit(1) } defer tarFile.Close() tarReader := tar.NewReader(tarFile) for true { header, err := tarReader.Next() if err == io.EOF { break } if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println("Extracting ", header.Name) switch header.Typeflag { case tar.TypeDir: err = os.Mkdir(header.Name, 0755) if err != nil { fmt.Println(err) os.Exit(1) } case tar.TypeReg: dest, err := os.Create(header.Name) if err != nil { fmt.Println(err) os.Exit(1) } defer dest.Close() _, err = io.Copy(dest, tarReader) if err != nil { fmt.Println(err) os.Exit(1) } default: fmt.Printf("Unable to extract %s\n", header.Name) } } }
このコードは、example.tar ファイルからすべての内容を抽出し、それらを分離します。適切なディレクトリまたはファイル。
標準ライブラリの archive/tar および archive/zip パッケージに加えて、使用できる他のパッケージがいくつかあります。ファイルを解凍します。よりよく知られているサードパーティ ライブラリの 1 つは gzip パッケージです。
gzip パッケージを使用して gzip ファイルを解凍するサンプル コードは次のとおりです。
package main import ( "fmt" "io" "os" "compress/gzip" ) func main() { inFile, err := os.Open("example.gz") if err != nil { fmt.Println(err) os.Exit(1) } defer inFile.Close() gzReader, err := gzip.NewReader(inFile) if err != nil { fmt.Println(err) os.Exit(1) } defer gzReader.Close() dest, err := os.Create("example") if err != nil { fmt.Println(err) os.Exit(1) } defer dest.Close() _, err = io.Copy(dest, gzReader) if err != nil { fmt.Println(err) os.Exit(1) } }
このコードは、example.gz ファイルからすべての内容を抽出および解凍し、ファイルに書き込みます。現在のディレクトリにある名前付きの example。
この記事では、標準ライブラリの archive/tar および archive/zip パッケージと、サードパーティ ライブラリの gzip パッケージを使用してファイルを解凍する方法を学びました。これらのライブラリの使用方法を理解すると、圧縮ファイルの管理と操作がより簡単になります。
以上がGolang がファイルを解凍する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。