Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }