设为首页 加入收藏

TOP

golang 用tar打包文件或文件夹(二)
2017-09-30 13:22:58 】 浏览:10432
Tags:golang tar 打包 文件 文件夹
*tar.Writer) error {
 
  
    sfile, err := os.Open(filesource)
 
  
    if err != nil {
        panic(err)
        return err
    }
    defer sfile.Close()
 
  
    header, err := tar.FileInfoHeader(sfileInfo, "")
    if err != nil {
        fmt.Println(err)
        return err
    }
    header.Name = directory
    err = tarwriter.WriteHeader(header)
    if err != nil {
        fmt.Println(err)
        return err
    }
    //  can use buffer to copy the file to tar writer
    //    buf := make([]byte,15)
    //    if _, err = io.CopyBuffer(tarwriter, sfile, buf); err != nil {
    //        panic(err)
    //        return err
    //    }
    if _, err = io.Copy(tarwriter, sfile); err != nil {
        fmt.Println(err)
        panic(err)
        return err
    }
    return nil
}
func tarFolder(directory string, tarwriter *tar.Writer) error {
 
  
    var baseFolder string = filepath.Base(directory)
    //fmt.Println(baseFolder)
    return filepath.Walk(directory, func(targetpath string, file os.FileInfo, err error) error {
        //read the file failure
        if file == nil {
            panic(err)
            return err
        }
        if file.IsDir() {
            // information of file or folder
            header, err := tar.FileInfoHeader(file, "")
            if err != nil {
                return err
            }
            header.Name = filepath.Join(baseFolder, strings.TrimPrefix(targetpath, directory))
        
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇go语言学习之路六:接口详解 下一篇我读《通过Go来处理每分钟达百万..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目