ZIPファイル内にある全てのファイルのモード(パーミッション等)を表示する

説明

ZIPファイル内にある全てのファイルのモード(パーミッション等)を表示するにはarchive/zipパッケージを読み込ませます。その後、zip.OpenReader()を使ってファイル数を取得したいZIPファイルのパスを指定します。zip.OpenReader()の戻り値は多値になっています。ZIPファイルを正しく解析できた場合は最初の戻り値にファイルの情報を格納した配列が返されます。配列なのでlen()メソッドを使えばZIPファイル内に保存されているファイルの総数を求めることができます。次にファイルの総数分だけforを使って繰り返します。
zip.OpenReader()によって得られたファイル情報はFile配列に入っており、モード(パーミッション等)はMode()で取得することができます。Mode()の戻り値はos.FileModeの形式になっています。サンプルでは%vとすることでモードが文字列(drwxr-xr-x)として表示されるようにしてあります。

サンプル [サンプルをダウンロード]

package main
import (
"fmt"
"os"
"archive/zip"
)
func main() {
fdata, err := zip.OpenReader("/data/flower.zip")
if err != nil {
os.Exit(1)
}
defer fdata.Close()
for i := 0; i<len(fdata.File); i++ {
f := fdata.File[i].Name
m := fdata.File[i].Mode()
fmt.Printf("%s : %v\n", f, m)
}
}

実行結果

Go言語を使ったプログラムの実行結果