private List <BackupContainer <T> > loadBackupContainers <T>(string fileName, string backupName) { List <BackupContainer <T> > result = new List <BackupContainer <T> >(); StreamReader reader = new StreamReader(fileName, Encoding.UTF8); try { reader.BaseStream.Position = 0; while (!reader.EndOfStream) { string json = reader.ReadLine(); BackupContainer <object> res = HelperSerialization.JSONDeserialization <BackupContainer <object> >(json); BackupContainer <T> clearRes = new BackupContainer <T>(res.Id, default, res.TimeString, res.Reason, res.ByWho);
private void makeBackup(string name, object obj, object id, string reasonId = "", string byWho = "", bool delete = false) { string idStr = id.ToString(); string timeString = DateTime.Now.ToString(this._configDateTimeFormat); string dir = $"{this._configDirectoryBackups}/{name}/"; string fileName = $"{dir}/stack.json"; string backup = ""; try { BackupContainer <object> bc = new BackupContainer <object>(idStr, obj, timeString, reasonId, byWho); bc.Delete = delete; backup = HelperSerialization.JSONSerialization(bc); lock (this.getLocker(name)) { Directory.CreateDirectory(dir); StreamWriter writer = new StreamWriter(fileName, true, Encoding.UTF8); long size = writer.BaseStream.Length; writer.WriteLine(backup); writer.Flush(); writer.Close(); if (size > 8000000) //больше 8 мб { Directory.CreateDirectory($"{dir}/stacks"); string newFileName = $"{dir}/stacks/{timeString}.json"; File.Move(fileName, newFileName); } } } catch (Exception e) { if (this._logger != null) { this._logger.Error(e, String.Format("Error of making backup '{0}' obj='{1}'.", name, obj.ToJSON())); } return; } if (this._logger != null) { this._logger.Info(String.Format("Made backup '{0}'.", name)); } }