Хорошо, позвольте мне ответить на некоторые из них для вас.
Zipping - это способ сжатия набора данных, который делает его очень маленьким и удобным для переноса.
проверить: http://forums.pcworld.co.nz/archive/index.php/t-22243.html
Потоков:
Потоки - это просто способ абстрагировать последовательность байтов, чтобы вы могли читать из них / записывать в них (и обычно искать их). Чтобы превратить объект в поток или байтовый массив, вы должны использовать BinaryFormatter (или SoapFormatter) вместе с атрибутами Serializiable и NonSerialized, применяемыми к полям сериализуемых объектов. Сериализация объекта просто записывает данные его поля в любой поток по вашему выбору (поскольку System.IO.Stream является базовым классом, вы можете записывать в MemoryStream, FileStream, NetworkStream и т. Д.)
Работа с частями файла также довольно проста. Все, что вам нужно сделать, это использовать метод Seek для потока (или свойство Position) для чтения определенных фрагментов данных. Например:
byte[] buffer = new byte[4000];
myStream.Position = 1000;
myStream.Read(buffer, 0, buffer.Length);
Это будет считывать только байты 1000-5000 в буфер, даже не просматривая остальные данные в файле, который я считаю.
.NET позволяет читать файл, весь файл или ничего из файла. Зная это, GZipStream будет работать аналогично.
Некоторые ссылки для вас:
http://www.geekpedia.com/tutorial190_Zipping-files-using-GZipStream.html
http://www.csharphacker.com/technicalblog/index.php/2009/07/27/gzipstream-helper-gzip/
http://dotnetperls.com/gzipstream