57 lines
757 B
Go
57 lines
757 B
Go
package main
|
|
|
|
import (
|
|
"archive/tar"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
f, err := os.Open("image/cache.tar")
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
defer f.Close()
|
|
|
|
// gzf, err := gzip.NewReader(f)
|
|
// if err != nil {
|
|
// fmt.Println(err)
|
|
// os.Exit(1)
|
|
// }
|
|
|
|
tarReader := tar.NewReader(f)
|
|
|
|
for {
|
|
header, err := tarReader.Next()
|
|
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
name := header.Name
|
|
|
|
switch header.Typeflag {
|
|
case tar.TypeDir:
|
|
continue
|
|
case tar.TypeReg:
|
|
fmt.Println("File: ", name)
|
|
// show the contents
|
|
// io.Copy(os.Stdout, tarReader)
|
|
default:
|
|
fmt.Printf("%s : %c %s %s\n",
|
|
"hmmm?",
|
|
header.Typeflag,
|
|
"in file",
|
|
name,
|
|
)
|
|
}
|
|
}
|
|
}
|