Je viens d'ajouter le support GZipStream pour mon application aujourd'hui, donc je peux partager du code ici;
sérialisation:
using (Stream s = File.Create(PathName))
{
RijndaelManaged rm = new RijndaelManaged();
rm.Key = CryptoKey;
rm.IV = CryptoIV;
using (CryptoStream cs = new CryptoStream(s, rm.CreateEncryptor(), CryptoStreamMode.Write))
{
using (GZipStream gs = new GZipStream(cs, CompressionMode.Compress))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(gs, _instance);
}
}
}
Désérialisation:
using (Stream s = File.OpenRead(PathName))
{
RijndaelManaged rm = new RijndaelManaged();
rm.Key = CryptoKey;
rm.IV = CryptoIV;
using (CryptoStream cs = new CryptoStream(s, rm.CreateDecryptor(), CryptoStreamMode.Read))
{
using (GZipStream gs = new GZipStream(cs, CompressionMode.Decompress))
{
BinaryFormatter bf = new BinaryFormatter();
_instance = (Storage)bf.Deserialize(gs);
}
}
}
REMARQUE: si vous utilisez CryptoStream, il est un peu important que vous chaîne (un) passer comme un éclair et (de) crypting droit de cette façon, parce que vous voudrez perdre votre entropie avant que le cryptage ne crée du bruit à partir de vos données.
merci cela a été vraiment utile, à quoi ressemblerait le décompresseur ... jamais utilisé BinaryFormatter avant. –
Merci d'avoir fait cela facilement copier + pastable dans mon code. Je format assez souvent les choses que c'est maintenant un extrait que je peux facilement trouver sur Google. +1 –