我只是出于娱乐目的,尝试将gzip Writer直接连接到gzip Reader,以便我可以写入Writer并即时从Reader中读取内容。我希望能准确阅读我写的东西。我正在使用gzip,但我想也将这种方法与crypto / aes一起使用,我想它应该工作得非常相似,并且可以与jpeg,png等其他读取器/写入器一起使用...
这是我最好的选择,它不起作用,但是希望您能明白我的意思:http : //play.golang.org/p/7qdUi9wwG7
package main
import (
"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。
您需要做两件事才能使其正常工作
这是看起来像
func main() {
s := []byte("Hello world!")
fmt.Printf("%s\n", s)
in, out := io.Pipe()
gz := gzip.NewWriter(out)
go func() {
ungz, err := gzip.NewReader(in)
fmt.Println("err: ", err)
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)
}()
gz.Write(s)
gz.Flush()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句