Writer
发布者:admin 发表于:416天前 阅读数:667 评论:0

本文整理汇总了Golang中archive/zip.Writer类的典型用法代码### 示例。如果您正苦于以下问题:Golang Writer类的具体用法?Golang Writer怎么用?Golang Writer使用的例子?那么恭喜您, 这里精选的类代码### 示例或许可以为您提供帮助。

在下文中一共展示了Writer类的20个代码### 示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码### 示例。

示例1: zipFile

// Deal with file
func zipFile(srcFile string, recPath string, zw *zip.Writer, fi os.FileInfo) {
    if fi.IsDir() {
        // Create zip header
        fh := new(zip.FileHeader)
        fh.Name = recPath + "/"
        fh.UncompressedSize = 0

        _, err := zw.CreateHeader(fh)
        handleError(err)
    } else {
        // Create zip header
        fh := new(zip.FileHeader)
        fh.Name = recPath
        fh.UncompressedSize = uint32(fi.Size())
        fw, err := zw.CreateHeader(fh)
        handleError(err)

        // Read file data
        buf := make([]byte, fi.Size())
        f, err := os.Open(srcFile)
        handleError(err)
        _, err = f.Read(buf)
        handleError(err)

        // Write file data to zip
        _, err = fw.Write(buf)
        handleError(err)
    }
}

开发者ID:seacoastboy,项目名称:go-compresser,代码行数:30,代码来源:go-zip.go

示例2: array2XlsxWriteSharedStrings

func array2XlsxWriteSharedStrings(zw *zip.Writer, data [][]string) (err error) {
    siList := []xlsxSharedStringSi{{""}}
    for _, row := range data {
        for _, v1 := range row {
            if v1 == "" { //ignore blank cell can save space
                continue
            }
            siList = append(siList, xlsxSharedStringSi{v1})
        }
    }
    sst := xlsxSharedStringSst{
        Xmlns:  xmlNs,
        Count:  len(siList),
        SiList: siList,
    }
    thisW, err := zw.Create(sharedStringsFileName)
    _, err = thisW.Write([]byte(xml.Header))
    if err != nil {
        return
    }
    encoder := xml.NewEncoder(thisW)
    err = encoder.Encode(sst)
    if err != nil {
        return
    }
    return
}

开发者ID:keysonZZZ,项目名称:kmg,代码行数:27,代码来源:XlsxWriter.go

示例3: AddContainer

func AddContainer(zippy *zip.Writer) {
    container, err := zippy.Create(path.Join("META-INF", "container.xml"))
    if err != nil {
        log.Fatal(err)
    }
    WriteToFile(container, "<?xml version=\"1.0\"?>")
}

开发者ID:smazga,项目名称:GetFARMSEpub,代码行数:7,代码来源:GetFARMSEpub.go

示例4: AddMimetype

func AddMimetype(zippy *zip.Writer) {
    mimetype, err := zippy.Create("mimetype")
    if err != nil {
        log.Fatal(err)
    }
    WriteToFile(mimetype, "application/epub+zip")
}

开发者ID:smazga,项目名称:GetFARMSEpub,代码行数:7,代码来源:GetFARMSEpub.go

示例5: writeFile2Zip

func writeFile2Zip(zw *zip.Writer, path string, name string) error {
    file, err := os.Open(path + name)
    if err != nil {
        return err
    }
    defer file.Close()

    info, err := file.Stat()
    if err != nil {
        return err
    }

    header, err := zip.FileInfoHeader(info)
    if err != nil {
        return err
    }
    header.Name = name

    writer, err := zw.CreateHeader(header)
    if err != nil {
        return err
    }

    _, err = io.Copy(writer, file)
    return err
}

开发者ID:jsli,项目名称:gtbox,代码行数:26,代码来源:zip.go

示例6: addKeysToArchive

func addKeysToArchive(zipWriter *zip.Writer, newKeyStore *trustmanager.KeyFileStore) error {
    for _, relKeyPath := range newKeyStore.ListFiles() {
        fullKeyPath := filepath.Join(newKeyStore.BaseDir(), relKeyPath)

        fi, err := os.Lstat(fullKeyPath)
        if err != nil {
            return err
        }

        infoHeader, err := zip.FileInfoHeader(fi)
        if err != nil {
            return err
        }

        infoHeader.Name = relKeyPath

        zipFileEntryWriter, err := zipWriter.CreateHeader(infoHeader)
        if err != nil {
            return err
        }

        fileContents, err := ioutil.ReadFile(fullKeyPath)
        if err != nil {
            return err
        }

        if _, err = zipFileEntryWriter.Write(fileContents); err != nil {
            return err
        }
    }

    return nil
}

开发者ID:DaveDaCoda,项目名称:docker,代码行数:33,代码来源:import_export.go

示例7: addKeysToArchive

func addKeysToArchive(zipWriter *zip.Writer, newKeyStore *trustmanager.KeyFileStore, subDir string) error {
    // List all files but no symlinks
    for _, relKeyPath := range newKeyStore.ListFiles(false) {
        fullKeyPath := filepath.Join(newKeyStore.BaseDir(), relKeyPath)

        fi, err := os.Stat(fullKeyPath)
        if err != nil {
            return err
        }

        infoHeader, err := zip.FileInfoHeader(fi)
        if err != nil {
            return err
        }

        infoHeader.Name = filepath.Join(subDir, relKeyPath)
        zipFileEntryWriter, err := zipWriter.CreateHeader(infoHeader)
        if err != nil {
            return err
        }

        fileContents, err := ioutil.ReadFile(fullKeyPath)
        if err != nil {
            return err
        }
        if _, err = zipFileEntryWriter.Write(fileContents); err != nil {
            return err
        }
    }

    return nil
}

开发者ID:ChanderG,项目名称:docker,代码行数:32,代码来源:import_export.go

示例8: Write

// Write the File to io.Writer as xlsx
func (f *File) Write(writer io.Writer) (err error) {
    var parts map[string]string
    var zipWriter *zip.Writer

    parts, err = f.MarshallParts()
    if err != nil {
        return
    }

    zipWriter = zip.NewWriter(writer)

    for partName, part := range parts {
        var writer io.Writer
        writer, err = zipWriter.Create(partName)
        if err != nil {
            return
        }
        _, err = writer.Write([]byte(part))
        if err != nil {
            return
        }
    }

    err = zipWriter.Close()

    return
}

开发者ID:lasithasenanayake,项目名称:v6engine-deps,代码行数:28,代码来源:file.go

示例9: foliazipdir

func foliazipdir(q *Context, zf *zip.Writer, fdir, subdir string) (ok bool) {
    dir := filepath.Join(fdir, subdir)
    files, err := ioutil.ReadDir(dir)
    if foliaErr(q, err) {
        return false
    }
    for _, file := range files {
        fname := path.Join(subdir, file.Name()) // in zip alleen forward slashes toegestaan
        if file.IsDir() {
            if !foliazipdir(q, zf, fdir, fname) {
                return false
            }
        } else {
            data, err := ioutil.ReadFile(filepath.Join(fdir, fname))
            if foliaErr(q, err) {
                return false
            }
            fh, err := zip.FileInfoHeader(file)
            if foliaErr(q, err) {
                return false
            }
            fh.Name = fname
            f, err := zf.CreateHeader(fh)
            if foliaErr(q, err) {
                return false
            }
            _, err = f.Write(data)
            if foliaErr(q, err) {
                return false
            }
        }
    }
    return true
}

开发者ID:rug-compling,项目名称:paqu,代码行数:34,代码来源:foliatool.go

示例10: addFileToZip

func addFileToZip(w *zip.Writer, path string, newname string) error {
    f, err := os.Open(path)
    if err != nil {
        return err
    }
    info, err := f.Stat()
    if err != nil {
        return err
    }
    header, err := zip.FileInfoHeader(info)
    if err != nil {
        return err
    }
    if newname != "" {
        header.Name = newname
    }
    wr, err := w.CreateHeader(header)
    if err != nil {
        return err
    }
    fileBytes, err := ioutil.ReadFile(path)
    if err != nil {
        return err
    }
    _, err = wr.Write(fileBytes)
    if err != nil {
        return err
    }
    return nil
}

开发者ID:maxmcd,项目名称:gitbao,代码行数:30,代码来源:builder.go

示例11: addFileToZip

func addFileToZip(zipWriter *zip.Writer, fi os.FileInfo, srcPath string) error {
    fh, err := zip.FileInfoHeader(fi)
    if err != nil {
        return err
    }
    fh.Method = zip.Deflate
    destFile, err := zipWriter.CreateHeader(fh)
    if err != nil {
        return err
    }

    srcFile, err := os.Open(srcPath)
    if err != nil {
        return err
    }
    defer srcFile.Close()

    ba, err := ioutil.ReadAll(srcFile)
    if err != nil {
        return err
    }

    //_, err = io.Copy(destFile, srcFile)
    _, err = destFile.Write(ba)
    return err
}

开发者ID:jquag,项目名称:kempt,代码行数:26,代码来源:util.go

示例12: addFileToZIP

func addFileToZIP(zw *zip.Writer, item ArchiveItem) (err error) {
    binfo, err := os.Stat(item.FileSystemPath)
    if err != nil {
        return
    }
    header, err := zip.FileInfoHeader(binfo)
    if err != nil {
        return
    }
    header.Method = zip.Deflate
    //always use forward slashes even on Windows
    header.Name = strings.Replace(item.ArchivePath, "\\", "/", -1)
    w, err := zw.CreateHeader(header)
    if err != nil {
        zw.Close()
        return
    }
    bf, err := os.Open(item.FileSystemPath)
    if err != nil {
        return
    }
    defer bf.Close()
    _, err = io.Copy(w, bf)
    return
}

开发者ID:kc87654321,项目名称:goxc,代码行数:25,代码来源:zip.go

示例13: addKeysToArchive

func addKeysToArchive(zipWriter *zip.Writer, newKeyStore *trustmanager.KeyFileStore, tempBaseDir string) error {
    // List all files but no symlinks
    for _, fullKeyPath := range newKeyStore.ListFiles(false) {
        relKeyPath := strings.TrimPrefix(fullKeyPath, tempBaseDir)
        relKeyPath = strings.TrimPrefix(relKeyPath, string(filepath.Separator))

        fi, err := os.Stat(fullKeyPath)
        if err != nil {
            return err
        }

        infoHeader, err := zip.FileInfoHeader(fi)
        if err != nil {
            return err
        }

        infoHeader.Name = relKeyPath
        zipFileEntryWriter, err := zipWriter.CreateHeader(infoHeader)
        if err != nil {
            return err
        }

        fileContents, err := ioutil.ReadFile(fullKeyPath)
        if err != nil {
            return err
        }
        if _, err = zipFileEntryWriter.Write(fileContents); err != nil {
            return err
        }
    }

    return nil
}

开发者ID:RichardScothern,项目名称:notary,代码行数:33,代码来源:import_export.go

示例14: addZipEntry

func addZipEntry(zw *zip.Writer, f filetesting.Entry) {
    h := &zip.FileHeader{
        Name: f.GetPath(),
        // Don't bother compressing - the contents are so small that
        // it will just slow things down for no particular benefit.
        Method: zip.Store,
    }
    contents := ""
    switch f := f.(type) {
    case filetesting.Dir:
        h.SetMode(os.ModeDir | 0755)
    case filetesting.File:
        h.SetMode(f.Perm)
        contents = f.Data
    case filetesting.Symlink:
        h.SetMode(os.ModeSymlink | 0777)
        contents = f.Link
    }
    w, err := zw.CreateHeader(h)
    if err != nil {
        panic(err)
    }
    if contents != "" {
        if _, err := w.Write([]byte(contents)); err != nil {
            panic(err)
        }
    }
}

开发者ID:jrwren,项目名称:charmrepo,代码行数:28,代码来源:testcharm.go

示例15: writeFileToZip

// 逐个文件,写入zip包
// zipper *zip.Writer:要写入的zip包的zip.Writer
// includeFileName string:本次写入的文件的全路径+名字
func writeFileToZip(zipper *zip.Writer, includeFileName string) error {
    //打开待写入文件
    includeFile, err := os.Open(includeFileName)
    if err != nil {
        return err
    }
    defer includeFile.Close()

    //获取文件描述
    includeFileInfo, err := includeFile.Stat()
    if err != nil {
        return err
    }

    //zip.FileInfoHeader
    zipFileHeader, err := zip.FileInfoHeader(includeFileInfo)
    if err != nil {
        return err
    }

    //修改文件描述的Header,截断路径,只保留文件名
    //否则,解压的时候,可能按压缩进来时候的文件路径来解压,解压回到原来的位置,而不是当前目录
    zipFileHeader.Name = path.Base(includeFileName)

    //用zip.FileInfoHeader,创建zip包内的一个项,并获得io.Writer,准备写入文件
    zipFileWriter, err := zipper.CreateHeader(zipFileHeader)
    if err != nil {
        return err
    }

    //写入本次的文件
    _, err = io.Copy(zipFileWriter, includeFile)
    return err
}

开发者ID:TYuenCN,项目名称:TYGo,代码行数:37,代码来源:compress.go

示例16: addIndexToZip

// addIndexToZip generates an index.html file for the given Overlay and adds
// it to the provided zip file.
func addIndexToZip(c appengine.Context, z *zip.Writer, oKey *datastore.Key, o *Overlay) error {
    w, err := z.Create(fmt.Sprintf("%s/index.html", oKey.Encode()))
    if err != nil {
        return err
    }
    return zipTemplate.Execute(w, o)
}

开发者ID:TheAustrianPro,项目名称:overlay-tiler,代码行数:9,代码来源:task.go

示例17: addZip

func addZip(filename, buildDir string, zipWriter *zip.Writer) error {
    zipfile, err := os.Open(filename)
    if err != nil {
        return err
    }
    defer zipfile.Close()

    info, err := zipfile.Stat()
    if err != nil {
        return err
    }

    header, err := zip.FileInfoHeader(info)
    if err != nil {
        return err
    }

    r := regexp.MustCompile(buildDir + "/")
    header.Name = r.ReplaceAllString(filename, "")
    writer, err := zipWriter.CreateHeader(header)
    if err != nil {
        return err
    }

    _, err = io.Copy(writer, zipfile)
    return nil
}

开发者ID:gophergala2016,项目名称:sisho,代码行数:27,代码来源:epubify.go

示例18: addHandlerToZip

func addHandlerToZip(w *zip.Writer, bf baofile.Baofile) error {
    path := "lambda/handler_example.js"
    f, err := os.Open(path)
    if err != nil {
        return err
    }
    info, err := f.Stat()
    if err != nil {
        return err
    }
    header, err := zip.FileInfoHeader(info)
    if err != nil {
        return err
    }
    wr, err := w.CreateHeader(header)
    if err != nil {
        return err
    }
    fileBytes, err := ioutil.ReadFile(path)
    if err != nil {
        return err
    }

    handlerTemplate := string(fileBytes)
    t := template.Must(template.New("handler").Parse(handlerTemplate))
    err = t.Execute(wr, bf)
    if err != nil {
        return err
    }
    return nil
}

开发者ID:maxmcd,项目名称:gitbao,代码行数:31,代码来源:builder.go

示例19: zipFile

// Deal with files
func zipFile(srcFile string, recPath string, tw *zip.Writer, fi os.FileInfo) {
    if fi.IsDir() {
        //      fmt.Println("??")
        // Create tar header
        /*
           fh, err := zip.FileInfoHeader(fi)
           if err != nil {
               panic(err)
           }
           fh.Name = recPath // + "/"
           err = tw.WriteHeader(hdr)
           tw.Create(recPath)
        */
    } else {
        // File reader
        fr, err := os.Open(srcFile)
        if err != nil {
            panic(err)
        }
        defer fr.Close()

        // Write hander
        w, err2 := tw.Create(recPath)
        if err2 != nil {
            panic(err)
        }
        // Write file data
        _, err = io.Copy(w, fr)
        if err != nil {
            panic(err)
        }
    }
}

开发者ID:ClaudeXin,项目名称:leanote,代码行数:34,代码来源:zip.go

示例20: ToZip

// Writes this tree to the given zip file, returning an error on failure.
func (t Stream) ToZip(w *zip.Writer) error {
    for blob := range t {

        hdr, err := zip.FileInfoHeader(blob)
        if err != nil {
            return err
        }

        writer, err := w.CreateHeader(hdr)
        if err != nil {
            return err
        }

        if blob.Contents() != nil {
            _, err := io.Copy(writer, blob.Contents())
            if err != nil {
                return err
            }
        }

        if blob.Error() != nil {
            return blob.Error()
        }
    }

    w.Close()

    return nil
}

开发者ID:fatlotus,项目名称:anvil,代码行数:30,代码来源:zip_files.go