当前位置 博文首页 > 使用go读取gzip格式的压缩包的操作

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

    作者:robertkun 时间:2021-02-04 12:17

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

    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语言用得少,对于流的操作也比较少所以写一个今天实现这个功能的总结,点滴积累厚积薄发!

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

    js
    下一篇:没有了