code: func (z *ZipArchive) AddFile(fileName, absPath string) error {
  	if cae.IsFilter(absPath) {
  		return nil
  	}
  
  	f, err := os.Open(absPath)
  	if err != nil {
  		return err
  	}
  	defer f.Close()
  
  	fi, err := f.Stat()
  	if err != nil {
  		return err
  	}
  
  	file := new(File)
  	file.FileHeader, err = zip.FileInfoHeader(fi)
  	if err != nil {
  		return err
  	}
  	file.Name = fileName
  	file.absPath = absPath
  
  	z.AddEmptyDir(path.Dir(fileName))
  
  	isExist := false
  	for _, f := range z.files {
  		if fileName == f.Name {
  			f = file
  			isExist = true
  			break
  		}
  	}
  	if !isExist {
  		z.files = append(z.files, file)
  	}
  
  	z.updateStat()
  	return nil
  }
docs: // AddFile adds a file entry to ZipArchive.