1
compress/gzipを使用してgzipファイルを読み込もうとしています。私は通常のtxtファイルまたはgzippedを取得するかどうかわからないので、私はhttp.DetectContentTypeを使用しています。私のコードは非常にまっすぐ進むと以下の通りである:golangでgzipファイルを読み込もうとするとエラーが発生する
f, err := os.Open(fullpath)
if err != nil {
log.Panicf("Can not open file %s: %v", fullpath, err)
return ""
}
defer f.Close()
buff := make([]byte, 512)
_, err = f.Read(buff)
if err != nil && err != io.EOF{
log.Panicf("Cannot read buffer %v", err);
return ""
}
switch filetype := http.DetectContentType(buff); filetype {
case "application/x-gzip":
log.Println("File Type is", filetype)
reader, err := gzip.NewReader(f)
if err != nil && err != io.EOF{
log.Panicf("Cannot read gzip archive %v", err);
return ""
}
defer reader.Close()
target := "/xx/yy/abcd.txt"
writer, err := os.Create(target)
if err != nil {
log.Panicf("Cannot write unarchived file %v", err);
return ""
}
defer writer.Close()
_, err = io.Copy(writer, reader)
return target
問題があるgzipのリーダーが常にエラーアウト「gzip形式のアーカイブはgzipを読み取ることができません:無効なヘッダーを」と言っている私もなく、無駄にzlibライブラリを試してみました。私はコマンドラインのgzipツールを使ってMacでソースファイルをgzipしました。 私が間違っているところを教えてください。
だから、大きなバッファは、おそらく1024で十分でしょうか? – PiKaY
ああ申し訳ありません。私はあなたの言うことを得る。試してみてください – PiKaY
すごい。ありがとうございました。私はこれを考えなかった:) – PiKaY