GZipStream используется для сжатия и распаковки потока ... вы не можете использовать его для сжатия и распаковки нескольких файлов. Фактически, вы можете, но вы должны разработать способ слияния этих файлов в один поток, а также знать, как сделать операцию обратным (получить эти файлы из потока). Если у вас есть один файл, вы могли бы сделать это следующим образом:
using (var outFile = File.Create(outputFileName))
{
using (GZipStream gzip = new GZipStream(download, CompressionMode.Decompress))
{
var buffer = new byte[4096];
var numRead = 0;
while ((numRead = gzip.Read(buffer, 0, buffer.Length)) != 0)
{
outFile.Write(buffer, 0, numRead);
}
}
}
Here статья, описывающая, как GZipStream может быть использован для сжатия/распаковки нескольких файлов, но, как вы можете видеть, автор разработал свою собственную " zip "для хранения нескольких файлов, а отдельные потоки сжимаются с использованием GZipStream.
В вашем случае, если вы не сделали этого сжатия, вы, скорее всего, получите стандартный zip-файл, и в этом случае вы можете использовать библиотеку с именем SharpZipLib для распаковки вашего контента.
Вот пример использования SharpZipLib
using (var s = new ZipInputStream(download)
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if(fileName == myFileName)
{
using (FileStream streamWriter = File.Create(theEntry.Name))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
}
}
}
}
http://blogs.msdn.com/b/bclteam/archive/2006/05/10/592551.aspx –
какая информация находится в gzipstream? – caesay
Архив содержит три сжатых файла, меня интересует только один из них. –