// Создание файла сохранений. public static void CreateFile(bool isDefault) { NumOfFiles++; string str = ""; if (isDefault) { str = "Unnamed 1"; UnnamedFilesIdx.Add(1); CurrentFilePair = new KeyValuePair <string, string>(str, $"data{NumOfFiles}"); } FileNamesAndAliases.Add(str, $"data{NumOfFiles}"); try { string path = String.Format("{0}\\Data\\data{1}.dat", AppDomain.CurrentDomain.BaseDirectory, NumOfFiles); using (FileStream fs = new FileStream(path, FileMode.Create)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.WriteLine(0); } } } catch (Exception ex) { MainWindow.Logger(ex); throw; } }
// Загрузка информации о файлах сохранений. public static void LoadGlobalData() { List <string> data = new List <string>(); try { string path = String.Format("{0}\\Data\\global.dat", AppDomain.CurrentDomain.BaseDirectory); using (FileStream fs = new FileStream(path, FileMode.Open)) { using (StreamReader sr = new StreamReader(fs)) { // Построчное считывание в лист data. string line; while ((line = sr.ReadLine()) != null) { data.Add(line); } } } } catch (Exception ex) { MainWindow.Logger(ex); throw; } NumOfFiles = Int32.Parse(data[0]); CurrentFilePair = GetKeyValuePair(data[1]); int idx = 2; while (idx < data.Count && data[idx] != "" && data[idx] != null) { var pair = GetKeyValuePair(data[idx]); FileNamesAndAliases.Add(pair.Key, pair.Value); idx++; } idx++; while (idx < data.Count) { UnnamedFilesIdx.Add(Int32.Parse(data[idx])); idx++; } }
// Получает новое название с наименьшим номером для "unnamed" файла, // исходя из уже существующих "unnamed" файлов. // *** // Метод нужен для следующего. Например есть "unnamed" файлы с цифрами '1', '2' и '3', // мы удаляем файл с цифрой '2'. Потом снова добавляется "безымянный" файл. // Ему будет присвоена цифра '2'. public static string GetUnnamedWithIdx() { int idx = 0; while (idx < UnnamedFilesIdx.Count) { if ((idx + 1) != UnnamedFilesIdx[idx]) { break; } else { idx++; } } idx++; UnnamedFilesIdx.Add(idx); return(String.Format("Unnamed {0}", idx)); }
// Удаляет файл сохранения, его имя и псевдоним. public static void DeleteFile(string name) { // Если файл "unnnamed", удаляем его индекс из соответствующего списка. if (IsUnnamed(name)) { int idx = GetIdxOfUnnamed(name); UnnamedFilesIdx.Remove(idx); } string path = String.Format("{0}\\Data\\{1}.dat", AppDomain.CurrentDomain.BaseDirectory, FileNamesAndAliases[name]); try { File.Delete(path); } catch (Exception ex) { MainWindow.Logger(ex); throw; } FileNamesAndAliases.Remove(name); }