本文整理汇总了Golang中archive/zip.NewWriter函数的典型用法代码示例。如果您正苦于以下问题:Golang NewWriter函数的具体用法?Golang NewWriter怎么用?Golang NewWriter使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewWriter函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: NewTPExporter
func NewTPExporter(storDb LoadStorage, tpID, expPath, fileFormat, sep string, compress bool) (*TPExporter, error) {
if len(tpID) == 0 {
return nil, errors.New("Missing TPid")
}
if !utils.IsSliceMember(TPExportFormats, fileFormat) {
return nil, errors.New("Unsupported file format")
}
tpExp := &TPExporter{
storDb: storDb,
tpID: tpID,
exportPath: expPath,
fileFormat: fileFormat,
compress: compress,
cacheBuff: new(bytes.Buffer),
}
runeSep, _ := utf8.DecodeRuneInString(sep)
if runeSep == utf8.RuneError {
return nil, fmt.Errorf("Invalid field separator: %s", sep)
} else {
tpExp.sep = runeSep
}
if compress {
if len(tpExp.exportPath) == 0 {
tpExp.zipWritter = zip.NewWriter(tpExp.cacheBuff)
} else {
if fileOut, err := os.Create(path.Join(tpExp.exportPath, "tpexport.zip")); err != nil {
return nil, err
} else {
tpExp.zipWritter = zip.NewWriter(fileOut)
}
}
}
return tpExp, nil
}
示例2: zipIt
func zipIt(files []IncludedFile) string {
buf := new(bytes.Buffer)
zipWriter := zip.NewWriter(buf)
for _, file := range files {
zipFile, err := zipWriter.Create(file.Name)
if err != nil {
check(err)
}
_, err = zipFile.Write([]byte(file.Body))
if err != nil {
check(err)
}
}
err := zipWriter.Close()
check(err)
// Write zipfile to disk.
t := time.Now()
finalName := fmt.Sprintf("graylog_apollo_bundle-%d-%02d-%02dT%02d-%02d-%02d.zip", t.Year(), t.Month(), t.Day(),
t.Hour(), t.Minute(), t.Second())
ioutil.WriteFile(finalName, buf.Bytes(), 0644)
return finalName
}
示例3: writeZipFile
func writeZipFile(dir string, targetFile *os.File) (err error) {
isEmpty, err := fileutils.IsDirEmpty(dir)
if err != nil {
return
}
if isEmpty {
err = errors.New("Directory is empty")
return
}
writer := zip.NewWriter(targetFile)
defer writer.Close()
err = WalkAppFiles(dir, func(fileName string, fullPath string) (err error) {
fileInfo, err := os.Stat(fullPath)
if err != nil {
return err
}
header, err := zip.FileInfoHeader(fileInfo)
header.Name = filepath.ToSlash(fileName)
if err != nil {
return err
}
zipFilePart, err := writer.CreateHeader(header)
err = fileutils.CopyPathToWriter(fullPath, zipFilePart)
return
})
return
}
示例4: ExportKeysByGUN
// ExportKeysByGUN exports all keys associated with a specified GUN to an
// io.Writer in zip format. passphraseRetriever is used to select new passphrases to use to
// encrypt the keys.
func (km *KeyStoreManager) ExportKeysByGUN(dest io.Writer, gun string, passphraseRetriever passphrase.Retriever) error {
tempBaseDir, err := ioutil.TempDir("", "notary-key-export-")
defer os.RemoveAll(tempBaseDir)
privNonRootKeysSubdir := filepath.Join(privDir, nonRootKeysSubdir)
// Create temporary keystore to use as a staging area
tempNonRootKeysPath := filepath.Join(tempBaseDir, privNonRootKeysSubdir)
tempNonRootKeyStore, err := trustmanager.NewKeyFileStore(tempNonRootKeysPath, passphraseRetriever)
if err != nil {
return err
}
if err := moveKeysByGUN(km.nonRootKeyStore, tempNonRootKeyStore, gun); err != nil {
return err
}
zipWriter := zip.NewWriter(dest)
if len(tempNonRootKeyStore.ListKeys()) == 0 {
return ErrNoKeysFoundForGUN
}
if err := addKeysToArchive(zipWriter, tempNonRootKeyStore, privNonRootKeysSubdir); err != nil {
return err
}
zipWriter.Close()
return nil
}
示例5: zipResource
// Just zip up what ever is in the path
func zipResource(path string, topLevelFolder string) {
zipfile := new(bytes.Buffer)
zipper := zip.NewWriter(zipfile)
startPath := path + "/"
filepath.Walk(path, func(path string, f os.FileInfo, err error) error {
if filepath.Base(path) != ".DS_Store" {
// Can skip dirs since the dirs will be created when the files are added
if !f.IsDir() {
file, err := ioutil.ReadFile(path)
if err != nil {
return err
}
fl, err := zipper.Create(filepath.Join(topLevelFolder, strings.Replace(path, startPath, "", -1)))
if err != nil {
ErrorAndExit(err.Error())
}
_, err = fl.Write([]byte(file))
if err != nil {
ErrorAndExit(err.Error())
}
}
}
return nil
})
zipper.Close()
zipdata := zipfile.Bytes()
ioutil.WriteFile(path+".resource", zipdata, 0644)
return
}
示例6: ExampleWriter
func ExampleWriter() {
// Create a buffer to write our archive to.
buf := new(bytes.Buffer)
// Create a new zip archive.
w := zip.NewWriter(buf)
// Add some files to the archive.
var files = []struct {
Name, Body string
}{
{"readme.txt", "This archive contains some text files."},
{"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},
{"todo.txt", "Get animal handling licence.\nWrite more examples."},
}
for _, file := range files {
f, err := w.Create(file.Name)
if err != nil {
log.Fatal(err)
}
_, err = f.Write([]byte(file.Body))
if err != nil {
log.Fatal(err)
}
}
// Make sure to check the error on Close.
err := w.Close()
Strtofile(buf.Bytes(), `c:\xx.zip`)
if err != nil {
log.Fatal(err)
}
}
示例7: Save
// Save the File to an xlsx file at the provided path.
func (f *File) Save(path string) (err error) {
var parts map[string]string
var target *os.File
var zipWriter *zip.Writer
parts, err = f.MarshallParts()
if err != nil {
return
}
target, err = os.Create(path)
if err != nil {
return
}
zipWriter = zip.NewWriter(target)
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()
if err != nil {
return
}
return target.Close()
}
示例8: Archive
func (z *zipper) Archive(src, dest string) error {
if err := os.MkdirAll(filepath.Dir(dest), 0777); err != nil {
return err
}
out, err := os.Create(dest)
if err != nil {
return err
}
defer out.Close()
w := zip.NewWriter(out)
defer w.Close()
return filepath.Walk(src, func(path string, info os.FileInfo,
err error) error {
if info.IsDir() {
return nil // スキップします
}
if err != nil {
return err
}
in, err := os.Open(path)
if err != nil {
return err
}
defer in.Close()
f, err := w.Create(path)
if err != nil {
return err
}
io.Copy(f, in)
return nil
})
}
示例9: getZip
func getZip(e env, projectId string) bool {
userKey, done := getUser(e)
if done {
return true
}
snapshot, snapshotKey, done := getLastSnapshot(e, userKey, projectId)
if done {
return true
}
e.w.Header().Set("Content-Type", "application/zip")
e.w.Header().Set("Content-Disposition", "inline; filename="+projectId+".zip")
w := zip.NewWriter(e.w)
done = addZipFile(e, w, "", snapshot.Top, snapshotKey)
if done {
return true
}
err := w.Close()
if err != nil {
e.w.Header().Set("Content-type", "text/html; charset=utf-8")
e.w.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(e.w, `Could not wrap up the zip file`)
log.Println("Error finishing zip file", err)
return true
}
return true
}
示例10: Zip
// Función encargada de crear un archivo ZIP y escribir sobre él el contenido
// de un directorio/archivo
func Zip(startPath, finalFileName, finalFilePath string) error {
// Abrimos la ruta inicial
startDirectory, err := openPath(startPath)
if err != nil {
return err
}
// Cerramos la ruta inicial
defer startDirectory.Close()
// Creamos directorio destino
if err := createDirectory(finalFilePath, 0777); err != nil {
return err
}
// Creamos archivo ZIP
zipFile, err := createFile(finalFilePath + finalFileName)
if err != nil {
return err
}
// Cerramos archivo ZIP
defer zipFile.Close()
// Creamos writer para el archivo ZIP
zipWriter := zip.NewWriter(zipFile)
// Cerramos Writer
defer zipWriter.Close()
// Iniciamos recorrido del directorio
if err := walkDirectory(startDirectory, zipWriter); err != nil {
return err
}
return nil
}
示例11: WriteToFile
// WriteToFile creates a zip with all its contents
func (d *Docx) WriteToFile(target string) error {
docxFile, err := os.Create(target)
if err != nil {
return err
}
defer docxFile.Close()
d.Writer = zip.NewWriter(docxFile)
defer d.Writer.Close()
for _, f := range d.Files {
zippedFile, err := d.Writer.Create(f.Name)
if err != nil {
return err
}
zippedFile.Write(f.Contents)
}
zippedFile, err := d.Writer.Create("word/document.xml")
if err != nil {
return err
}
zippedFile.Write([]byte(d.WordXML))
return nil
}
示例12: nwBuild
func nwBuild(nw string) error {
w, err := os.Create(nw)
if err != nil {
return err
}
defer w.Close()
zw := zip.NewWriter(w)
defer zw.Close()
r, err := os.Open(app)
if err != nil {
return err
}
defer r.Close()
bin := filepath.Base(app)
p := build.Package{Name: name, Bin: bin, Window: build.Window{Title: name, Toolbar: toolbar, Fullscreen: fullscreen, Frame: frame}}
if err := p.CreateNW(zw, build.DefaultTemplates, r, includesDir); err != nil {
return err
}
return nil
}
示例13: CreateZipArchive
func CreateZipArchive(filename string, files []ArchiveFile) {
file, err := os.Create(filename)
Ω(err).ShouldNot(HaveOccurred())
w := zip.NewWriter(file)
for _, file := range files {
header := &zip.FileHeader{
Name: file.Name,
}
mode := file.Mode
if mode == 0 {
mode = 0777
}
header.SetMode(os.FileMode(mode))
f, err := w.CreateHeader(header)
Ω(err).ShouldNot(HaveOccurred())
_, err = f.Write([]byte(file.Body))
Ω(err).ShouldNot(HaveOccurred())
}
err = w.Close()
Ω(err).ShouldNot(HaveOccurred())
err = file.Close()
Ω(err).ShouldNot(HaveOccurred())
}
示例14: CreateTestZip
func CreateTestZip(t *T) *bytes.Reader {
t.Log("Creating in-memory zip file")
buf := new(bytes.Buffer)
zw := zip.NewWriter(buf)
for _, file := range files {
t.Logf("Adding file %q (%d bytes) to zip file", file.Path, len(file.Contents))
fw, err := zw.Create(file.Path)
if err != nil {
t.Fatal(err)
}
if _, err := fw.Write(file.Contents); err != nil {
t.Fatal(err)
}
}
t.Logf("Creating Manifest in zip file")
if fw, err := zw.Create("MANIFEST"); err != nil {
t.Fatal(err)
} else {
for _, file := range files {
mimestring := http.DetectContentType(file.Contents)
mediatype, params, err := mime.ParseMediaType(mimestring)
if err != nil {
t.Fatal(err)
}
fmt.Fprintf(fw, "%s (%d bytes): %s %v\n", file.Path, len(file.Contents), mediatype, params)
}
}
if err := zw.Close(); err != nil {
t.Fatal(err)
}
t.Log("Finished zip file,", buf.Len(), "bytes written.")
return bytes.NewReader(buf.Bytes())
}
示例15: Zip
//export Zip
func Zip(zipname *C.char, filenames []*C.char) int32 {
f, err := os.Create(C.GoString(zipname))
if err != nil {
log.Println(err)
return -1
}
defer f.Close()
w := zip.NewWriter(f)
defer w.Close()
for _, name := range filenames {
ww, err := w.Create(C.GoString(name))
if err != nil {
log.Println(err)
return -1
}
fi, err := os.Open(C.GoString(name))
if err != nil {
log.Println(err)
return -1
}
defer fi.Close()
if _, err := io.Copy(ww, fi); err != nil {
log.Println(err)
return -1
}
}
return 0
}