code: func (tz *TzArchive) AddFile(fileName, absPath string) error {
  	if cae.IsFilter(absPath) {
  		return nil
  	}
  
  	si, err := os.Lstat(absPath)
  	if err != nil {
  		return err
  	}
  
  	target := ""
  	if si.Mode()&os.ModeSymlink != 0 {
  		target, err = os.Readlink(absPath)
  		if err != nil {
  			return err
  		}
  	}
  
  	file := new(File)
  	file.Header, err = tar.FileInfoHeader(si, target)
  	if err != nil {
  		return err
  	}
  	file.Name = fileName
  	file.absPath = absPath
  
  	tz.AddEmptyDir(path.Dir(fileName))
  
  	isExist := false
  	for _, f := range tz.files {
  		if fileName == f.Name {
  			f = file
  			isExist = true
  			break
  		}
  	}
  	if !isExist {
  		tz.files = append(tz.files, file)
  	}
  
  	tz.updateStat()
  	return nil
  }
docs: // AddFile adds a file entry to TzArchive.