使用go读取gzip格式的压缩包的操作
程序员文章站
2022-09-02 12:30:10
我就废话不多说了,大家还是直接看代码吧~package main// 引入所需包import ( "os" "compress/gzip" "io/ioutil" "fmt")// 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语言用得少,对于流的操作也比较少所以写一个今天实现这个功能的总结,点滴积累厚积薄发!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
上一篇: ipc通道入侵相关命令整理