func Open(fileName string) (*TzArchive, error) {
	return OpenFile(fileName, os.O_RDONLY, 0)
}
Open opens the named tar.gz file for reading. If successful, methods on
the returned TzArchive can be used for reading; the associated file
descriptor has mode O_RDONLY.
If there is an error, it will be of type *PathError.
package tz
import (
	"archive/tar"
	"errors"
	"io"
	"os"
	"path"
	"path/filepath"
	"strings"
	"github.com/unknwon/cae"
)
type File struct {
	*tar.Header
	absPath string
}
type TzArchive struct {
	*ReadCloser
	FileName   string
	NumFiles   int
	Flag       int
	Permission os.FileMode
	files        []*File
	isHasChanged bool
	writer      io.Writer
	isHasWriter bool
}
func OpenFile(fileName string, flag int, perm os.FileMode) (*TzArchive, error) {
	tz := new(TzArchive)
	err := tz.Open(fileName, flag, perm)
	return tz, err
}
func Create(fileName string) (*TzArchive, error) {
	os.MkdirAll(path.Dir(fileName), os.ModePerm)
	return OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666)
}