diff --git a/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/StorageCollection.cs b/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/StorageCollection.cs index b6e0cb5..806a234 100644 --- a/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/StorageCollection.cs +++ b/WinFormsAppExcavator/WinFormsAppExcavator/CollectionGenericObjects/StorageCollection.cs @@ -139,73 +139,60 @@ public class StorageCollection /// /// Путь и имя файла/// true - загрузка прошла успешно, false - ошибка при загрузке ///данных - public bool LoadData(string filename) + public void LoadData(string filename) { if (!File.Exists(filename)) { throw new Exception("Файл не существует"); } - - string bufferTextFromFile = ""; - using (FileStream fs = new(filename, FileMode.Open)) + using (StreamReader fs = File.OpenText(filename)) { - byte[] b = new byte[fs.Length]; - UTF8Encoding temp = new(true); - while (fs.Read(b, 0, b.Length) > 0) + string str = fs.ReadLine(); + if (str == null || str.Length == 0) { - bufferTextFromFile += temp.GetString(b); + throw new Exception("В файле нет данных"); } - } - - string[] strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); - if (strs == null || strs.Length == 0) - { - throw new Exception("В файле нет данных"); - } - - if (!strs[0].Equals(_collectionKey)) - { - throw new Exception("В файле неверные данные"); - } - - _storages.Clear(); - foreach (string data in strs) - { - string[] record = data.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); - if (record.Length != 4) + if (!str.StartsWith(_collectionKey)) { - continue; + throw new Exception("В файле неверные данные"); } - - - CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]); - ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType) ?? - throw new Exception("Не удалось определить тип коллекции:" + record[1]); - collection.MaxCount = Convert.ToInt32(record[2]); - - string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries); - foreach (string elem in set) + _storages.Clear(); + string strs = ""; + while ((strs = fs.ReadLine()) != null) { - if (elem?.CreateDrawningExcavatorEmpty() is T excavator) + string[] record = strs.Split(_separatorForKeyValue, StringSplitOptions.RemoveEmptyEntries); + if (record.Length != 4) { - try + continue; + } + CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]); + ICollectionGenericObjects? collection = StorageCollection.CreateCollection(collectionType); + if (collection == null) + { + throw new Exception("Не удалось создать коллекцию"); + } + collection.MaxCount = Convert.ToInt32(record[2]); + string[] set = record[3].Split(_separatorItems, StringSplitOptions.RemoveEmptyEntries); + foreach (string elem in set) + { + if (elem?.CreateDrawningExcavatorEmpty() is T excavator) { - if (collection.Insert(excavator) != -1) + try { - throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]); + if (collection.Insert(excavator) == -1) + { + throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]); + } + } + catch (CollectionOverflowException ex) + { + throw new Exception("Коллекция переполнена", ex); } } - catch (CollectionOverflowException ex) - { - throw new Exception("Коллекция переполнена", ex); - } } + _storages.Add(record[0], collection); } - - _storages.Add(record[0], collection); } - - return true; } ///