Hayır, ... değil ama
Sadece benim app bugün için GZipStream desteği eklendi, bu yüzden burada biraz kod paylaşabilir;
Serile:
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);
}
}
}
Seri kaldırma:
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);
}
}
}
NOT: CryptoStream kullanırsanız, çünkü zincir (me) sıkıştırma ve (de) bu taraftan crypting bu biraz önemlidir Şifreleriniz, verilerinizden parazit oluşturmadan ÖNCE tümlüğünü kaybetmek istersiniz.
Primitifler mutlu bir şekilde tekrarlanırlar, bu durumda ortaya çıkan tek "sıkıştırma", kesintisiz diziler (örneğin bir dizide), dizideki sayıyı temsil eden bayt veya tamsayı olarak saklanmasıdır. Dizgiler (genellikle) tekrarlanmaz, sınıf tanımları tekrarlanmaz ve çoklu nesne referansları nesnenin birçok kez serileştirilmesi/çıkması ile sonuçlanmaz. – Tao