/// <summary> /// Loads previously stored sessions from persistent storage. /// </summary> public static IEnumerable <EnvironmentSession> LoadSessions() { IList <EnvironmentSession> sessions = new List <EnvironmentSession>(); string[] fileNames; try { Directory.CreateDirectory(environmentStoragePath); fileNames = Directory.GetFiles(environmentStoragePath, "*" + SessionExtension, SearchOption.AllDirectories); } catch (Exception ex) { fileNames = null; Trace.WriteLine("Unable to open directory: '" + environmentStoragePath + "'."); Trace.WriteLine(ex.Message); Trace.WriteLine(ex.StackTrace); } // load data from each session file: if (fileNames != null && fileNames.Length > 0) { foreach (string file in fileNames) { try { EnvironmentSession session = null; using (StreamReader reader = File.OpenText(file)) { if (session == null) { session = new EnvironmentSession(); } session.LoadFrom(reader, file); if (session.Count > 0) { if (string.IsNullOrEmpty(session.Name)) { string name = Path.GetFileName(file); session.Name = name.Substring(0, name.Length - SessionExtension.Length); } sessions.Add(session); session = null; } } } catch (Exception ex) { Trace.WriteLine("Unable to load session from file: '" + file + "'."); Trace.WriteLine(ex.Message); Trace.WriteLine(ex.StackTrace); } } } return(sessions); }
/// <summary> /// Writes given environment session variables changes into a persistent storage. /// </summary> public static void SaveSession(string fileName, EnvironmentSession session) { using (StreamWriter outputFile = new StreamWriter( environmentStoragePath + PrepareFileName(fileName) + SessionExtension, false, Encoding.UTF8)) { session.WriteTo(outputFile); } }