Tôi có một số mã tải xuống các tệp đã nén và giải nén chúng. Vấn đề là, tôi không thể làm cho nó giải nén toàn bộ tập tin, nó chỉ đọc 4096 byte đầu tiên và sau đó khoảng 500 hơn.GZipStream không đọc toàn bộ tệp
Byte[] buffer = new Byte[4096];
int count = 0;
FileStream fileInput = new FileStream("input.gzip", FileMode.Open, FileAccess.Read, FileShare.Read);
FileStream fileOutput = new FileStream("output.dat", FileMode.Create, FileAccess.Write, FileShare.None);
GZipStream gzipStream = new GZipStream(fileInput, CompressionMode.Decompress, true);
// Read from gzip steam
while ((count = gzipStream.Read(buffer, 0, buffer.Length)) > 0)
{
// Write to output file
fileOutput.Write(buffer, 0, count);
}
// Close the streams
...
Tôi đã kiểm tra tệp đã tải xuống; 13MB khi được nén và chứa một tệp XML. Tôi đã giải nén thủ công tệp XML và nội dung là tất cả ở đó. Nhưng khi tôi làm điều đó với mã này, nó chỉ xuất ra phần đầu của tệp XML.
Bất kỳ ai có bất kỳ ý tưởng nào tại sao điều này có thể xảy ra?
Tôi nhớ nhận được vấn đề này khi tôi đang viết một thói quen giải nén. Tuy nhiên, tôi đã nhìn vào mã làm việc mà tôi đã kết thúc và nó trông giống như của bạn bên cạnh việc được bọc trong các khối 'sử dụng'. –
Bạn có đang gọi phương thức Flush() không? – n535
Đã cố gắng với Flush(), không trợ giúp. – Edgar