Я пытаюсь читать gzip-файлы с помощью compress/gzip. Я использую http.DetectContentType, поскольку я не знаю, получаю ли я обычный файл txt или gzipped. Мой код очень прямо вперед, и, как показано ниже:Ошибка при попытке прочитать gzip-файлы в golang
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 тоже, но тщетно. Я загрузил исходный файл в mac с помощью командной строки gzip. Пожалуйста, покажите мне, где я ошибаюсь.
Так бы больший буфер, возможно, 1024 хватает? – PiKaY
О, извините. Я понимаю, что ты говоришь. Ill попробуйте, что – PiKaY
Amazing. Спасибо. Я не думал об этом :) :) – PiKaY