public static ReadEndDataResult <T> ReadEndData <T>(this FileInfo fi, string pass, ICrypter crypter = null) { crypter = crypter ?? new RijndaelCrypter(); var redr = new ReadEndDataResult <T>() { Crypter = crypter }; try { using (var fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read)) { fs.Position = fs.Length - sizeof(long); var endfile_pos = BitConverter.ToInt64(fs.ReadBytes(8), 0); fs.Position = fs.Length - endfile_pos; redr.Result = fs.ReadBytes(endfile_pos - sizeof(long)).DeserializeBinary <T>(pass, crypter); } } catch (Exception e) { redr.Exception = e; } return(redr); }
public static ReadEndDataResult <T> ReadEndData <T>(this FileInfo fi) { var redr = new ReadEndDataResult <T>(); try { using (var fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read)) { fs.Position = fs.Length - sizeof(long); var endfile_pos = BitConverter.ToInt64(fs.ReadBytes(8), 0); fs.Position = fs.Length - endfile_pos; var data = fs.ReadBytes(endfile_pos - sizeof(long)); IFormatter formatter = new BinaryFormatter(); var res = formatter.Deserialize(data.ToMemoryStream()); if (typeof(T) != res.GetType()) { throw new InvalidCastException("The deserialized object does not fit to the generic type T."); } redr.Result = (T)res; } } catch (Exception e) { redr.Exception = e; } return(redr); }