У меня есть этот кодC# Распаковка .GZip в файл
using System.IO;
using System.IO.Compression;
...
UnGzip2File("input.gz","output.xls");
Какой запустить эту процедуру, она работает без ошибок, но после этого, input.gz пуст и создал output.xls также пуст. В начале ввода.gz было 12 МБ. Что я делаю не так ? Или у вас лучшее/функциональное решение?
public static void UnGzip2File(string inputPath, string outputPath)
{
FileStream inputFileStream = new FileStream(inputPath, FileMode.Create);
FileStream outputFileStream = new FileStream(outputPath, FileMode.Create);
using (GZipStream gzipStream = new GZipStream(inputFileStream, CompressionMode.Decompress))
{
byte[] bytes = new byte[4096];
int n;
// To be sure the whole file is correctly read,
// you should call FileStream.Read method in a loop,
// even if in the most cases the whole file is read in a single call of FileStream.Read method.
while ((n = gzipStream.Read(bytes, 0, bytes.Length)) != 0)
{
outputFileStream.Write(bytes, 0, n);
}
}
outputFileStream.Dispose();
inputFileStream.Dispose();
}
Когда вы открываете файл для чтения, вы не должны использовать опцию «Создать». –
Обязательно используйте 'using' для всех ресурсов. Я не знаю, почему люди все еще не делают этого в 2014 году, хотя для этого нет никаких недостатков. – usr
usr: Хорошо, спасибо за подсказку. Я нахожу, что преимущество использования блока заключается в том, что оно утилизируется даже по ошибке. – Muflix