【Golang】zip内のファイル一覧を展開せずに取得する

Golang
この記事は約2分で読めます。

ファイル処理においてzipファイルを解凍してから中身を取得することが一般的ですが、
今回は展開せずにzip内のファイル一覧を取得してみます。
Golangでは標準パッケージのarchive/zipを使用します。

zip内のファイル一覧を取得するコード

読み取り対象のzipファイルの内容

下記のようなTestZip.zipを用意しました

zip内にファイルとフォルダが圧縮されているので、フォルダ名とファイル名を表示してみます。

zipファイルの内容を一覧表示するコード

下記のコードはzipファイルの内容を展開せずに、ファイル一覧を表示するコードです。

showFilesInZip関数内でzip.OpenReaderを使用して、指定したzipファイルを開いています。
もしファイルが見つからない場合や開く時にエラーが発生した場合はエラーを返します。

その後、取得したzipファイルの中身にアクセスするためにFileのスライスを使用します。
FileにはFileHeaderが埋め込まれているので、FileHeaderのNameフィールドを利用して
ファイル名を取得します。

最後に取得したファイル名をstringのスライスに格納して関数から返しています。

コードをを実行するとzipファイルを読み込み、zipファイル内のフォルダとファイル一覧が表示されます。

 

コメント