В моей программе есть сжатые ресурсы GZ, и я должен быть в состоянии записать их во временные файлы для использования.Я написал следующую функцию для записи файлов и возврата true
в случае успеха или false
в случае ошибки.Кроме того, я поместил здесь команду try / catch, которая показывает MessageBox
в случае ошибки:
private static bool extractCompressedResource(byte[] resource, string path)
{
try
{
using (MemoryStream ms = new MemoryStream(resource))
{
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
{
using (GZipStream zs = new GZipStream(fs, CompressionMode.Decompress))
{
ms.CopyTo(zs); // Throws exception
zs.Close();
ms.Close();
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); // Stream is not writeable
return false;
}
return true;
}
Я добавил комментарий к строке, которая выдает исключение.Если я поставлю точку останова на этой строке и загляну внутрь GZipStream
, тогда я увижу, что она недоступна для записи (что и является причиной проблемы).
Я делаю что-то не так или этоограничение GZipStream
класса?