public T DeserializeFromFile(string FileName, BasicFileInformation FileInfo, ObjectSerializer <T> .SerializeType Type, bool isZip) { T ret = default(T); FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); fs.Seek(BasicInformationSize(FileInfo), SeekOrigin.Begin); Stream SourceStream; if (FileInfo.SavePassword.Length > 0) { CryptoStream cs = DesCooler.CreateDecryptStream(FileInfo.SavePassword, fs); if (isZip) { SourceStream = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(cs); } else { SourceStream = cs; } } else { if (isZip) { SourceStream = new ICSharpCode.SharpZipLib.BZip2.BZip2InputStream(fs); } else { SourceStream = fs; } } try { switch (Type) { case ObjectSerializer <T> .SerializeType.JSON: ret = Deserialize_JSON(SourceStream); break; case ObjectSerializer <T> .SerializeType.Binary: ret = Deserialize_Binary(SourceStream); break; } } catch (Exception e) { fs.Close(); throw e; return(ret); } try { SourceStream.Close(); } catch {; } fs.Close(); if (ret != null) { BasicFileInformation bfi = GetBasicFileInformation(ret); if (bfi != null) { bfi.VersionString = FileInfo.VersionString; bfi.IntroduceText = FileInfo.IntroduceText; bfi.ProjectFilePath = (new System.IO.FileInfo(FileName)).FullName; } } return(ret); }
public void SerializeToFile(T Object, string FileName, SerializeType Type, bool isZip) { FileStream msObj = new FileStream(FileName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); BasicFileInformation bfi = GetBasicFileInformation(Object); string pwd = bfi.SavePassword; WriteBasicInformation(Object, msObj); Stream TargetStream; if (pwd.Length > 0) { CryptoStream cs = DesCooler.CreateEncryptStream(pwd, msObj); if (isZip) { TargetStream = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(cs); } else { TargetStream = cs; } } else { if (isZip) { TargetStream = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(msObj); } else { TargetStream = msObj; } } try { switch (Type) { case SerializeType.JSON: Serialize_JSON(Object, TargetStream); break; case SerializeType.Binary: Serialize_Binary(Object, TargetStream); break; } } catch {; } TargetStream.Flush(); TargetStream.Close(); msObj.Close(); }