tôi có mã rằng nên làm như nén:GZipStream và giải nén
FileStream fs = new FileStream("g:\\gj.txt", FileMode.Open);
FileStream fd = new FileStream("g:\\gj.zip", FileMode.Create);
GZipStream csStream = new GZipStream(fd, CompressionMode.Compress);
byte[] compressedBuffer = new byte[500];
int offset = 0;
int nRead;
nRead = fs.Read(compressedBuffer, offset, compressedBuffer.Length);
while (nRead > 0)
{
csStream.Write(compressedBuffer, offset, nRead);
offset = offset + nRead;
nRead = fs.Read(compressedBuffer, offset, compressedBuffer.Length);
}
fd.Close();
fs.Close();
và tôi nghĩ rằng nó làm, nhưng tôi muốn giải nén những gì đã nén cách trên. Tôi làm điều gì đó giống như vậy:
FileStream fd = new FileStream("g:\\gj.new", FileMode.Create);
FileStream fs = new FileStream("g:\\gj.zip", FileMode.Open);
GZipStream csStream = new GZipStream(fs, CompressionMode.Decompress);
byte[] decompressedBuffer = new byte[500];
int offset = 0;
int nRead;
nRead=csStream.Read(decompressedBuffer, offset, decompressedBuffer.Length);
while (nRead > 0)
{
fd.Write(decompressedBuffer, offset, nRead);
offset = offset + nRead;
nRead = csStream.Read(decompressedBuffer, offset, decompressedBuffer.Length);
}
fd.Close();
fs.Close();
và ở đây nó không ... Tôi đã có nRead = 0 bị bỏ qua vòng lặp ... Tôi làm gì sai ?? Tệp kiểm tra tôi sử dụng là tệp TEXT đơn giản nhất (kích thước: 104 byte) ...
câu trả lời Edited để hiển thị cả đọc và viết –
Cũng lưu ý rằng gzip = ".zip" –
(lưu ý tôi cố định một lỗi sau khi công bố;! Cheack rằng cả hai 'while' vòng chỉ' Đọc' trên dòng trên cùng (không phải ở phía dưới là tốt). –