Декомпрессия при чтении из файла, хранящегося на базе данных.
Код
SqlDataReader readfile = opfile.ExecuteReader();
if (readfile.Read())
{
SqlBytes fileData = readfile.GetSqlBytes(0);
DeflateStream decompress = new DeflateStream(fileData.Stream, CompressionMode.Decompress, true);
FileStream fs = new FileStream(savefile,
FileMode.Create,
FileAccess.ReadWrite);
int sourcebyte = decompress.ReadByte();
while (sourcebyte != -1)
{
fs.WriteByte((byte)sourcebyte); sourcebyte = decompress.ReadByte();
}
fs.Close();
decompress.Close();
decompress = null;
Компрессия файла для отправки в базу данных
Код
FileStream file = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] buffer = new byte[file.Length];
file.Read(buffer, 0, buffer.Length);
file.Close();
MemoryStream ms = new MemoryStream();
DeflateStream compress = new DeflateStream(ms, CompressionMode.Compress, true);
compress.Write(buffer, 0, buffer.Length);
compress.Close();
compress = null;
buf = new SqlBytes(ms);
Для хранения небольших файлов компрессию использовать не стоит.