使用go读取gzip格式的压缩包的操作

我就废话不多说了,大家还是直接看代码吧~

package main

// 引入所需包

import (

"os"

"compress/gzip"

"io/ioutil"

"fmt"

)

// gzip文件

var fn = "./113.200.251.66_1510825558_A6D39783B05943D8ACA64F397748CF1B_vdn.gz"

func main() {

println(fn)

// 打开本地gz格式压缩包

fr, err := os.Open(fn)

if err != nil {

panic(err)

} else {

println("open file success!")

}

// defer: 在函数退出时,执行关闭文件

defer fr.Close()

// 创建gzip文件读取对象

gr, err := gzip.NewReader(fr)

if err != nil {

panic(err)

}

// defer: 在函数退出时,执行关闭gzip对象

defer gr.Close()

// 读取gzip对象内容

rBuf, err := ioutil.ReadAll(gr)

if err != nil {

fmt.Println("[read gzip data err]: ", err)

}

// 以文本形式输出

fmt.Printf("%s\n", rBuf)

}

输出: ABCDEFG

补充:golang通过在线读取请求url返回的zip内部内容

访问url返回的zip包,怎么直接解析zip中的文件并获取文件中的信息呢?

以前都是用java语言做这些事情,今天闲来蛋疼,用golang也实现了一下,效果已经发布在我的公众号:j全家桶---激活码中。

引用了以下包:

"archive/zip"

"bufio"

"bytes"

"fmt"

"io"

"io/ioutil"

"net/http"

"os"

1、通过http包内部方法,请求了需要访问的url,这次只是为了分享在线解析zip,所以地址就不写出来了。

2、读取字节流并新建一个读卡器指定读取大小,最好弄个延迟关闭流不然内存泄露那是必须的。

3、接下来就是获取zip中的信息,只需要遍历一下读取到的文件把数据取出来就行了

其实还是蛮简单的,只是golang语言用得少,对于流的操作也比较少所以写一个今天实现这个功能的总结,点滴积累厚积薄发!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

以上是 使用go读取gzip格式的压缩包的操作 的全部内容, 来源链接: utcz.com/p/235830.html

回到顶部