遇到壓縮檔,在所難免,看看怎樣讀出來.
// hello43
package main
import (
"bufio"
"compress/gzip"
"fmt"
"io"
"os"
)
func main() {
// 開檔
inputFile, Error := os.Open("input.txt.gz")
// 判斷是否開檔錯誤
if Error != nil {
fmt.Println("開檔錯誤!")
return
}
// 離開時自動執行關檔
defer inputFile.Close()
// 宣告行計數器
cnt := 1
fz, Error := gzip.NewReader(inputFile)
if Error != nil {
fmt.Println("Gzip 錯誤!")
}
inputReader := bufio.NewReader(fz)
// 用迴圈讀取檔案內容
for {
// 讀取字串直到遇到跳行符號
inputString, Error := inputReader.ReadString('\n')
// 若到檔尾時分發生 io.EOF 錯誤
// 根據此錯誤 判斷是否離開
if Error == io.EOF {
fmt.Println("已讀取到檔尾!!")
return
}
// 列印內容
fmt.Printf("第%2d行:%s\n", cnt, inputString)
cnt++
}
}
執行結果:
λ ./hello43
第 1行:玉面飛鷹倒拔垂楊柳 豹子頭誤入白虎堂
第 2行:林教頭刺配滄州道 玉面飛鷹大鬧野豬林
已讀取到檔尾!!
程式跟昨天的幾乎一樣,只是將
inputReader := bufio.NewReader(inputFile)
變成
fz, Error := gzip.NewReader(inputFile)
if Error != nil {
fmt.Println("Gzip 錯誤!")
}
inputReader := bufio.NewReader(fz)
當然還有 import "compress/gzip"
甚至我們還可以把 Error 處理部份拿掉,不過沒必要那樣精簡.
如果是別的鬼壓縮的,就要找到對應的鬼囉??..
總裁正解!
iT邦幫忙MVPcdfu提到:
如果是別的鬼壓的,就要找到對應的鬼囉??
對啊...要找對負責的鬼