我的解壓縮工作正常多年!gzipstream解壓縮UNIX文件中止沒有錯誤
但是現在我有一些文件在幾次讀取後解壓時中止。
解壓縮將在694記錄後中止,但有1'829'768記錄!
我沒有收到任何來自GZipStream的錯誤。
恐怕,問題不是代碼而是微軟GZipStream中的一個缺陷或缺失功能。
我假定文件是使用某些UNIX環境壓縮的。
我可以使用WinRar或ZIP從shell進行解壓縮,但我無法使用GZipStream在「即時」解壓縮它們。
先解壓縮後再處理當然是可能的,但不是一種選擇,因爲其中一些文件很大。 (Terra字節)。這會浪費很多時間。
using System;
using System.Data;
using System.IO;
using System.IO.Compression;
public static void Unpack(string p_sZippedFileName)
{
const int cRecordLenght = 986;
byte[] ba = new byte[cRecordLenght];
int iRecordCounter = 0;
using (FileStream fileStream = new FileStream(p_sZippedFileName, FileMode.Open, FileAccess.Read))
using (GZipStream zipStream = new GZipStream(fileStream, CompressionMode.Decompress))
{
while (zipStream.Read(ba, 0, cRecordLenght) != 0)
{
iRecordCounter++;
}
Console.WriteLine("\nfinished after " + iRecordCounter.ToString() + " records ");
}
}
static void Main(string[] args)
{
Unpack(@"MyGzFile.gz");
}
壓縮文件大小爲15MB,未壓縮1.7GB。它應該有1'829'768個記錄!不是694!
不幸的是,您需要下載15MB數據文件才能看到此效果。
Download UNIX file that causes decompressing problems here