压缩文件和解压文件

压缩文件:

复制代码代码如下:

package main
import (
    "fmt"
    "os"
    "io"
    "archive/tar"
    "compress/gzip"
)
func main() {
    // file write
    fw, err := os.Create("tar/lin_golang_src.tar.gz")
    if err != nil {
        panic(err)
    }
    defer fw.Close()
    // gzip write
    gw := gzip.NewWriter(fw)
    defer gw.Close()
    // tar write
    tw := tar.NewWriter(gw)
    defer tw.Close()
    // 打开文件夹
    dir, err := os.Open("file/")
    if err != nil {
        panic(nil)
    }
    defer dir.Close()
    // 读取文件列表
    fis, err := dir.Readdir(0)
    if err != nil {
        panic(err)
    }
    // 遍历文件列表
    for _, fi := range fis {
        // 逃过文件夹, 我这里就不递归了
        if fi.IsDir() {
            continue
        }
        // 打印文件名称
        fmt.Println(fi.Name())
        // 打开文件
        fr, err := os.Open(dir.Name() + "/" + fi.Name())
        if err != nil {
            panic(err)
        }
        defer fr.Close()
        // 信息头
        h := new(tar.Header)
        h.Name = fi.Name()
        h.Size = fi.Size()
        h.Mode = int64(fi.Mode())
        h.ModTime = fi.ModTime()
        // 写信息头
        err = tw.WriteHeader(h)
        if err != nil {
            panic(err)
        }
        // 写文件
        _, err = io.Copy(tw, fr)
        if err != nil {
            panic(err)
        }
    }
    fmt.Println("tar.gz ok")
}

解压文件:

复制代码代码如下:

package main
import (
    "fmt"
    "os"
    "io"
    // "time"
    "archive/tar"
    "compress/gzip"
)
func main() {
    // file read
    fr, err := os.Open("tar/lin_golang_src.tar.gz")
    if err != nil {
        panic(err)
    }
    defer fr.Close()
    // gzip read
    gr, err := gzip.NewReader(fr)
    if err != nil {
        panic(err)
    }
    defer gr.Close()
    // tar read
    tr := tar.NewReader(gr)
    // 读取文件
    for {
        h, err := tr.Next()
        if err == io.EOF {
            break
        }
        if err != nil {
            panic(err)
        }
        // 显示文件
        fmt.Println(h.Name)
        // 打开文件
        fw, err := os.OpenFile("file2/" + h.Name, os.O_CREATE | os.O_WRONLY, 0644/*os.FileMode(h.Mode)*/)
        if err != nil {
            panic(err)
        }
        defer fw.Close()
        // 写文件
        _, err = io.Copy(fw, tr)
        if err != nil {
            panic(err)
        }
    }
    fmt.Println("un tar.gz ok")
}

原文地址:https://www.cnblogs.com/craneboos/p/8440426.html

时间: 2024-11-01 16:54:13

压缩文件和解压文件的相关文章

Linux 压缩文件 和解压文件

.zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName .rar 解压:rar -x FileName.zip 压缩:rar -a FileName.rar DirName .tar.gz或tgz 解压:tar -zxvf FileName.tar.gz 压缩:tar -zcvf FileName.tar.gz DirName

使用zip.js压缩文件和解压文件

zip.js官方网站为:https://stuk.github.io/jszip/ 在此说明,下面的例子基本上来自官方示例,大家可以做参考,官方示例地址为:https://stuk.github.io/jszip/documentation/examples.html 官方例子支持在线演示效果. 研究的目的是:如何获取zip包中的信息并读取传输(其实使用JAVA或者node.js更容易实现,之所以使用js也是因为业务的特殊性). 准备库: jszip.js可以去该地址下载:https://git

linux 下tar 打包分割文件和解压文件方法一点通

首先是压缩: tar -czvp -f skype_backup.tar.gz skype_backup 分割: split -b 4000k skype_backup.tar.gz skype_backup_20090626.tar.gz. –verbose 如上两句命令合并为一句: tar -czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose 合并文件: cat skype_backu

Linux tar(用来压缩和解压文件)

通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案.利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便

【转】Java压缩和解压文件工具类ZipUtil

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/ 1 package com.utility.zip; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import jav

Android_JarZip压缩和解压文件

本文资料来自<android开发权威指南> AndroidSDK中提供了java.util.jar和java.util.zip包中的若干类和接口来完成. 压缩文件基本步骤: 1.创建一个JarOutputStream或ZipOutputStream对象,分别用来生成jar或zip文件. 2.创建了(jar|zip)OutputStream对象,还不能直接向输出流写入数据.由于压缩文件也需要使用文件名和路径来标识被压缩的文 件,因此,需要为每一个要压缩的文件创建一个JarEntry或ZipEnt

【转】用ZipArchive在App里压缩、解压文件

在这篇教程里,我将演示如何在iOS应用内压缩和解压文件.我们会使用到一个叫做ZipArchive的第三方库来实现这一功能.虽然还有其他压缩和解压文件的方案,但我感觉ZipArchive是最快和最易使用的. 为什么我需要解压文件? 这个问题很好.有很多理由可以用来解释为什么你的应用需要支持压缩和解压文件,这是其中一些: 苹果的50M下载限制 苹果强制要求通过3G网络下载的应用大小不能超过50M,绕过这个限制的方法是尽量让你的二进制包足够小,然后在应用里下载需要的资源,当然最好的方式是先把资源打包成

java 压缩以及解压文件,有tar,zip,gz(gizp)和解压

package com.yabsz.decompCompr; import java.io.File; import java.util.ArrayList; import java.util.List; public class main { public static void main(String[] args) { //需要下载commons-net-ftp-2.0.jar包下载地址:http://download.csdn.net/detail/u010696272/8006739

C# 压缩和解压文件(SharpZipLib)

先从网上下载ICSharpCode.SharpZipLib.dll类库 将文件或文件夹压缩为zip,函数如下 1 /// <summary> 2 /// 压缩文件 3 /// </summary> 4 /// <param name="fileName">压缩文件路径</param> 5 /// <param name="zipName">压缩的文件名称</param> 6 /// <pa