golang使用 gzip压缩
golang使用 gzip压缩
这个例子中使用gzip压缩格式,标准库还支持zlib, bz2, flate, lzw
压缩处理_三步:
1.创建压缩文件
2.gzip write包装
3.写入数据
outputFile, _ := os.Create("G:/test.gz")
gzipWriter := gzip.NewWriter(outputFile) //gzipWriter:需要操作的句柄
defer gzipWriter.Close()
//写入gizp writer数据时,它会依次压缩数据并写入到底层的文件中
gzipWriter.Write([]byte("hello world!\n"))
log.Println("success")
解压缩_三步:
1.打开压缩文件
2.gzip Read包装
3.往新文件copy
打开一个gzip文件,它的内容不是一个文件,而是一个内存流
gzipFile, _ := os.Open("G:/test.gz")
gzipReader, _ := gzip.NewReader(gzipFile)
defer gzipReader.Close()
outfileWriter, err := os.Create("G:/unzipped.txt")
if err != nil {
log.Fatal(err)
}
defer outfileWriter.Close()
// 复制内容
_, err = io.Copy(outfileWriter, gzipReader)
if err != nil {
log.Fatal(err)
}
练习
package main import (
"bufio"
"compress/gzip"
"fmt"
"io"
"log"
"os"
"time"
) var (
gzipWriter *gzip.Writer
file *os.File
err error
) func init() {
//初始化创建一个压缩文件
outputFile, err := os.Create("G:/test.txt.gz")
if err != nil {
log.Fatal(err)
}
gzipWriter = gzip.NewWriter(outputFile) //打开普通文件
file, err = os.Open("G:/demo2.txt")
if err != nil {
panic(err)
}
} func main() {
start := time.Now().UnixNano()
//压缩
compress()
gzipWriter.Close()
num := time.Now().UnixNano()
fmt.Println("压缩", num-start) //解压缩
unCompress()
end := time.Now().UnixNano()
fmt.Println("解压缩", end-num)
} //读取普通文件,写入压缩文件
func compress() {
reader := bufio.NewReader(file)
for {
s, e := reader.ReadString('\n')
if e == io.EOF {
break
}
// 写入gizp writer数据时,它会依次压缩数据并写入到底层的文件中。
_, err := gzipWriter.Write([]byte(s))
if err != nil {
log.Fatal(err)
}
}
} // 打开一个gzip文件,它的内容不是一个文件,而是一个内存流
func unCompress() {
gzipFile, err := os.Open("G:/test.txt.gz")
if err != nil {
log.Fatal(err)
}
gzipReader, err := gzip.NewReader(gzipFile)
if err == io.EOF {
return
}
defer gzipReader.Close()
//创建解压后文件
outfileWriter, err := os.Create("G:/unzipped.txt")
if err != nil {
log.Fatal(err)
}
defer outfileWriter.Close()
// copy 压缩包数据copy到普通文件中
_, err = io.Copy(outfileWriter, gzipReader)
if err != nil {
log.Fatal(err)
}
}
golang使用 gzip压缩的更多相关文章
- golang tar gzip 压缩,解压(含目录文件)
tar是用于文件归档,gzip用于压缩.仅仅用tar的话,达不到压缩的目的.我们常见的tar.gz就是用gzip压缩生成的tar归档文件. go实现tar压缩与解压与zip类似,区别在于tar需要使用 ...
- ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩
网站开启 Gzip 压缩的好处相信很多人都已经清楚,这样做可以提高网站的性能.那么为什么很多网站没有开启 Gzip 压缩功能呢?原因有4点:防病毒软件.浏览器 bug.网站代理和服务器未配置. 使用 ...
- GZIP压缩优化
使用gzip优化web应用(filter实现) 相关知识: gzip是http协议中使用的一种加密算法,客户端向web服务器端发出了请求后,通常情况下服务器端会将页面文件和其他资源,返回到客户端,客户 ...
- IIS7配置Gzip压缩 JS压强失败的原因
开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的.如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内 ...
- Nginx 开启gzip 压缩
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术. 经过gz ...
- gzip压缩及测试方法【转载】
Nginx开启Gzip压缩大幅提高页面加载速度 http://www.veryhuo.com/a/view/51706.html 刚刚给博客加了一个500px相册插件,lightbox引入了很多js文 ...
- IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]
IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最 ...
- Nginx -- Gzip 压缩功能作用
1.对应的压缩参数说明# 开启gzip压缩功能gzip on; # 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取.默认值是0,不管页面多大都进行压缩,建 ...
- IIS7 启用GZip压缩
GZip压缩通常会达到70%以上的压缩率,如果是手机Web这无疑会使网站的访问速度大大增加,无论是CSS合并.JS合并.图片合并都不如GZip压缩来得简单直接.如果一个网页是100K,那么启用GZip ...
随机推荐
- 定义返回结果 Resultmodel
web: checkPath: localhost:9099 success: 1 error: 0 package com.worker.config; import org.springframe ...
- Mongodb 的ORM框架 Morphia之注解
@Entity("bands") public class Band { @Id ObjectId id; String name; String genre; @Referenc ...
- Idea使用maven搭建SpringMVC框架
https://www.cnblogs.com/shang-shang/p/7477607.html
- Vue和后台交互的方式
1 vue-resource https://segmentfault.com/a/1190000007087934 2 axios 3 ajax
- windows10安装JIRA
windows10安装MySQL数据库 一.问题现象: cmd执行“mysql”命令,提示:ERROR 2003 (HY000): Can't connect to MySQL server on ' ...
- Hadoop2.7.7_HA高可用部署
1. Hadoop的HA机制 前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 1.1. HA的运作机制 (1)hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*2 ...
- 100-days: twenty
Title: Apple's 'show time(好戏开幕)' event(发布会) puts the spotlight on subscription services Apple's 'sho ...
- 【noip模拟赛4】Matrix67的派对 暴力dfs
[noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们 ...
- gk888t打印机安装
https://jingyan.baidu.com/article/948f5924090c7ad80ff5f9c5.html
- scrapy 爬取智联招聘
准备工作 1. scrapy startproject Jobs 2. cd Jobs 3. scrapy genspider ZhaopinSpider www.zhaopin.com 4. scr ...