为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中的透明(类似过滤器)gzip/gunzip

Go 中的透明(类似过滤器)gzip/gunzip

Go
凤凰求蛊 2021-07-03 14:00:48
我正在尝试,只是为了好玩,将 gzip Writer 直接连接到 gzip Reader,这样我就可以写入 Writer 并从 Reader 动态读取。我希望能准确地阅读我写的内容。我正在使用 gzip,但我也想将这种方法与加密/aes 一起使用,我想它的工作方式应该非常相似,并且可以与其他读取器/写入器一起使用,例如 jpeg、png ......这是我最好的选择,这是行不通的,但我希望你能明白我的意思:http : //play.golang.org/p/7qdUi9wwG7package mainimport (    "bytes"    "compress/gzip"    "fmt")func main() {    s := []byte("Hello world!")    fmt.Printf("%s\n", s)    var b bytes.Buffer    gz := gzip.NewWriter(&b)    ungz, err := gzip.NewReader(&b)    fmt.Println("err: ", err)    gz.Write(s)    gz.Flush()    uncomp := make([]byte, 100)    n, err2 := ungz.Read(uncomp)    fmt.Println("err2: ", err2)    fmt.Println("n: ", n)    uncomp = uncomp[:n]    fmt.Printf("%s\n", uncomp)}似乎gzip.NewReader(&b)正在尝试立即读取并返回 EOF。
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

使用管道。例如,

包io

功能管道

func Pipe() (*PipeReader, *PipeWriter)

Pipe创建一个同步的内存管道。它可用于将需要 io.Reader 的代码与需要 io.Writer 的代码连接起来。一端的读取与另一端的写入匹配,直接在两者之间复制数据;没有内部缓冲。并行调用 Read 和 Write 或使用 Close 是安全的。一旦挂起的 I/O 完成,关闭将完成。对 Read 的并行调用和对 Write 的并行调用也是安全的:各个调用将按顺序进行门控。


查看完整回答
反对 回复 2021-07-12
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信