【发布时间】:2018-06-29 16:13:33
【问题描述】:
这是我的代码,我是 Go 新手。
我试着用谷歌搜索这个问题,但我不能完全解决这个问题。
我认为这与Read() 方法有关。
package main
import (
...
)
type compressor struct {
content []byte
}
func (r *compressor) compress() []byte {
...
}
func (r *compressor) decompress() []byte {
var buffer bytes.Buffer
dc := flate.NewReader(&buffer)
_, err := dc.Read(r.content)
if err != nil {
if err != io.EOF {
log.Fatal(err)
}
}
return buffer.Bytes()
}
func main() {
fileName := os.Args[1]
fmt.Println(os.Args)
contents, err := ioutil.ReadFile(fileName)
if err != nil {
log.Fatal(err)
}
fmt.Print("Uncompressed data: ")
fmt.Println(len(contents))
comp := compressor{contents}
buffer := comp.decompress()
fmt.Print("Uncompressed data: ")
fmt.Println(len(comp.decompress()))
err = ioutil.WriteFile(fileName+".decjc", buffer, 0644)
if err != nil {
log.Fatal(err)
}
}
这是输出
dylan@skynet:~/Documents/EXP/jc$ ./jc data.txt.jc [./jc data.txt.jc] Uncompressed data: 2364480 2018/06/29 21:41:35 unexpected EOF
【问题讨论】:
-
抛出的错误在哪里?什么线路?
-
你正在从一个空缓冲区读取,所以没有什么可以解压缩的。
-
也许你在
decompress()中的第一行你的意思是bytes.NewReader(r.content) -
@Dylan:不,它没有。您正在阅读
buffer,这是一个bytes.Buffer,您从未将任何数据放入其中。 -
请看一下这个 Github 问题评论:github.com/revel/revel/issues/566#issuecomment-42019967