Я использовал следующий код для сжатия данных в .Net 4.0:
public static byte[] CompressData(byte[] data_toCompress)
{
using (MemoryStream outFile = new MemoryStream())
{
using (MemoryStream inFile = new MemoryStream(data_toCompress))
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
inFile.CopyTo(Compress);
}
return outFile.ToArray();
}
}
Однако в .Net 2.0 метод Stream.CopyTo недоступен.Итак, я попытался сделать замену:
public static byte[] CompressData(byte[] data_toCompress)
{
using (MemoryStream outFile = new MemoryStream())
{
using (MemoryStream inFile = new MemoryStream(data_toCompress))
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
//inFile.CopyTo(Compress);
Compress.Write(inFile.GetBuffer(), (int)inFile.Position, (int)(inFile.Length - inFile.Position));
}
return outFile.ToArray();
}
}
Сжатие завершается неудачно, однако, при использовании вышеуказанной попытки - я получаю сообщение об ошибке:
Внутренний буфер MemoryStream не доступен.
Может ли кто-нибудь предложить какую-либо помощь по этому вопросу?Я действительно не уверен, что еще здесь делать.
Спасибо, Эван