Я пытаюсь прочитать серию gzip-файлов, используя приведенный ниже код.
В результате я получаю файл, который составляет лишь часть общего файла.Интересно, что вывод текстового файла практически идеально обрезается при переносе строки.
public static string UnzipFile(string filename)
{
FileInfo fi = new FileInfo(filename);
Console.WriteLine($" - - - - - UnzipFile {filename} {fi.Length} - - - - - ");
string newFileName = filename.Substring(0, filename.Length - 4);
try
{
byte[] buffer = new byte[4096]; // read in chunks of 4KB
using (FileStream fs2 = new FileStream(newFileName, FileMode.CreateNew))
{
using (FileStream fs = new FileStream(filename, FileMode.Open))
{
using (GZipStream zipStream = new GZipStream(fs, CompressionMode.Decompress))
{
zipStream.BufferSize = 1024;
int bytesRead;
while((bytesRead = zipStream.Read(buffer, 0, buffer.Length)) > 0)
{
Console.WriteLine($" {bytesRead} ");
fs2.Write(buffer, 0, bytesRead);
fs2.Flush(true);
}
}
}
}
FileInfo fi2 = new FileInfo(newFileName);
Console.WriteLine($" - - - - {newFileName} {fi2.Length}");
}
catch (Exception e)
{
Console.WriteLine($" - - - - - EXCEPTION {e.Message} {e.StackTrace}");
}
return newFileName;
}
Вот частичный вывод при запуске кода:
UnzipFile : 177686_2018-10-18_0#289.json.gz 34975
4096
4096
855
177686_2018-10-18_0#289.json 9047
Так что это выглядит как файл размера34975 байт при сжатии в итоге распаковывает только 9047 байт.Если я использую gunzip на Mac для расширения файла, я получаю файл размером 223344 байта.
Где я ошибся?
edit: Дополнительные данные
В случаеэто помогает, я получаю это при использовании GZip.Decompress
Bad CRC32 in GZIP trailer. (actual(7C64AEAA)!=expected(F641B726)) at Ionic.Zlib.ZlibBaseStream.finish()
Дополнительные данные при проверке позиции FileStream
fs pos: 2093 fs len: 33930