meideru blog

meideruが書いているブログです。主に電子工作・プログラミング・ガジェット類などを中心に記事を書いています。

Go言語でZIPファイルを解凍する方法(ソースの解説付き)

   

最近、Go言語に没頭しています。

サーバサイドでZIPファイルを解凍する必要があり、Go言語を使うことになったのですが、思いの外、苦戦しました。

なので、私の備忘録の意味も含めて記事に書きたいと思います。

ソースコード

GitHub

私のGitHubにもソースコードを貼りましたので、こちらからもダウンロードできます。

https://github.com/meideru/GolangUnzip

ソースコード

使い方

Unzip関数の第一引数に解凍したいZIPファイル、第二引数に出力先のディレクトリを渡すだけです。

ソースコードの解説

簡単にソースコードの解説を行いたいと思います。

ZIPファイルの中身を取得

まず、zip.OpenReader関数でZIPファイルの中身を取得します。

zip.OpenReader関数について

この関数は、ZIPファイルの中身を配列で返してきます。

ZIPファイルの中身を1つずつ処理

次に、ZIPファイルの中身を1つずつ処理します。

具体的には

のようにして1つずつ処理します。

 

そして、fがフォーカスしているのがディレクトリであればディレクトリを作成し、そうでなければ(ファイルであれば)ファイルを作成してやります。

 

 

ファイルの作成方法ですが、ここではbufというメモリ(スライス)にコピー元のファイルを書き込んで、出力先にファイルを作成して新たに書き込むというやり方です。

まとめ

以上です。

何か質問がありましたら、気軽にコメントをお願いします!

 

ノシ

 - プログラミング