我做了一個文本文件,然後我用gzip
壓縮。然後運行以下go
程序來讀取該壓縮文件的內容。Golang:爲什麼compress/gzip Read函數沒有讀取文件內容?
package main
import (
"compress/gzip"
"fmt"
"os"
)
func main() {
handle, err := os.Open("zipfile.gz")
if err != nil {
fmt.Println("[ERROR] File Open:", err)
}
defer handle.Close()
zipReader, err := gzip.NewReader(handle)
if err != nil {
fmt.Println("[ERROR] New gzip reader:", err)
}
defer zipReader.Close()
var fileContents []byte
bytesRead, err := zipReader.Read(fileContents)
if err != nil {
fmt.Println("[ERROR] Reading gzip file:", err)
}
fmt.Println("[INFO] Number of bytes read from the file:", bytesRead)
fmt.Printf("[INFO] Uncompressed contents: '%s'\n", fileContents)
}
,我得到的迴應是:
$ go run zipRead.go
[INFO] Number of bytes read from the file: 0
[INFO] Uncompressed contents: ''
爲什麼我沒有得到從文件中的任何內容?
我在OS X和Ubuntu上都創建了zip文件。我在OS X和Ubuntu上構建了這個go
程序,結果相同。
除了[@JimB says](http://stackoverflow.com/a/32018378/55504)之外,您還錯誤地使用了'Read'。你需要傳遞一個你想要它放入字節的分配片,你傳遞一個零片('len(fileContents)== 0,所以你要求零字節)。 –