From ca8a0d11189130121d13b6e3575ac88b5bdfd2fc Mon Sep 17 00:00:00 2001 From: platoff aeeee Date: Wed, 6 Dec 2023 11:26:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=D1=8F=206?= =?UTF-8?q?=20=D0=BB=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/Tank/Generics/TanksGenericCollection.cs | 2 +- Tank/Tank/Generics/TanksGenericStorage.cs | 155 +++++++------------ 2 files changed, 60 insertions(+), 97 deletions(-) diff --git a/Tank/Tank/Generics/TanksGenericCollection.cs b/Tank/Tank/Generics/TanksGenericCollection.cs index ebac13c..fb43f71 100644 --- a/Tank/Tank/Generics/TanksGenericCollection.cs +++ b/Tank/Tank/Generics/TanksGenericCollection.cs @@ -41,7 +41,7 @@ namespace Tank.Generics /// /// Получение объектов коллекции /// - public IEnumerable GetCars => _collection.GetTanks(); + public IEnumerable GetTanks => _collection.GetTanks(); /// /// Конструктор /// diff --git a/Tank/Tank/Generics/TanksGenericStorage.cs b/Tank/Tank/Generics/TanksGenericStorage.cs index ceff663..92621d1 100644 --- a/Tank/Tank/Generics/TanksGenericStorage.cs +++ b/Tank/Tank/Generics/TanksGenericStorage.cs @@ -114,23 +114,52 @@ namespace Tank.Generics StringBuilder data = new(); foreach (KeyValuePair> record in _tankStorages) { - StringBuilder records = new(); + StringBuilder Records = new(); - foreach (DrawingArmoredCar? elem in record.Value.GetCars) + foreach (DrawingArmoredCar? elem in record.Value.GetTanks) { - records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}"); + Records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}"); } - data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}"); + data.AppendLine($"{record.Key}{_separatorForKeyValue}{Records}"); } if (data.Length == 0) { return false; } - using FileStream fs = new(filename, FileMode.Create); - byte[] info = new - UTF8Encoding(true).GetBytes($"TankStorage{Environment.NewLine}{data}"); - fs.Write(info, 0, info.Length); - return true; + using (StreamWriter writer = new StreamWriter(filename)) + { + writer.WriteLine("TankStorage"); + writer.Write(data.ToString()); + return true; + } + } + public bool SaveCollection(string filename) + { + if (File.Exists(filename)) + { + File.Delete(filename); + } + StringBuilder data = new(); + foreach (KeyValuePair> record in _tankStorages) + { + StringBuilder Records = new(); + + foreach (DrawingArmoredCar? elem in record.Value.GetTanks) + { + Records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}"); + } + data.AppendLine($"{record.Key}{_separatorForKeyValue}{Records}"); + } + if (data.Length == 0) + { + return false; + } + using (StreamWriter writer = new StreamWriter(filename)) + { + writer.WriteLine("TankStorage"); + writer.Write(data.ToString()); + return true; + } } /// /// Загрузка информации по автомобилям в хранилище из файла @@ -143,102 +172,36 @@ namespace Tank.Generics { return false; } - string bufferTextFromFile = ""; - using (FileStream fs = new(filename, FileMode.Open)) + using (StreamReader reader = new StreamReader(filename)) { - byte[] b = new byte[fs.Length]; - UTF8Encoding temp = new(true); - while (fs.Read(b, 0, b.Length) > 0) + string strCheck = reader.ReadLine(); + if (!strCheck.StartsWith("TankStorage")) + return false; + _tankStorages.Clear(); + string Str; + while ((Str = reader.ReadLine()) != null) { - bufferTextFromFile += temp.GetString(b); - } - } - var strs = bufferTextFromFile.Split(new char[] { '\n', '\r' }, - StringSplitOptions.RemoveEmptyEntries); - if (strs == null || strs.Length == 0) - { - return false; - } - - if (!strs[0].StartsWith("TankStorage")) - { - //если нет такой записи, то это не те данные - - return false; - } - _tankStorages.Clear(); - foreach (string data in strs) - { - string[] record = data.Split(_separatorForKeyValue, - StringSplitOptions.RemoveEmptyEntries); - if (record.Length != 2) - { - continue; - } - TanksGenericCollection - collection = new(_pictureWidth, _pictureHeight); - string[] set = record[1].Split(_separatorRecords, - StringSplitOptions.RemoveEmptyEntries); - foreach (string elem in set) - { - DrawingArmoredCar? car = elem?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight); - if (car != null) + if (Str == null) + break; + string name = Str.Split('|')[0]; + TanksGenericCollection collection = new(_pictureWidth, _pictureHeight); + foreach (string data in Str.Split('|')[1].Split(';')) { - if (!(collection + car)) + DrawingArmoredCar? ArmoredCar = data?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight); + if (ArmoredCar != null) { - return false; + if (!(collection + ArmoredCar)) + { + return false; + } } } + _tankStorages.Add(name, collection); } - _tankStorages.Add(record[0], collection); + return true; } - return true; + } - - - //if (!File.Exists(filename)) - //{ - // return false; - //} - //using (StreamReader reader = new StreamReader(filename)) - //{ - // string checker = reader.ReadLine(); - // if (checker == null) - // return false; - // if (!checker.StartsWith("TankStorage")) - // return false; - // _tankStorages.Clear(); - // string strs; - // bool firstinit = true; - // while ((strs = reader.ReadLine()) != null) - // { - // if (strs == null && firstinit) - // return false; - // if (strs == null) - // break; - // firstinit = false; - // string name = strs.Split('|')[0]; - // TanksGenericCollection collection = new(_pictureWidth, _pictureHeight); - // foreach (string data in strs.Split('|')[1].Split(';')) - // { - // DrawingArmoredCar? vehicle = data?.CreateDrawTank(_separatorForObject, _pictureWidth, _pictureHeight); - // if (vehicle != null) - // { - // if (!(collection + vehicle)) - // { - // return false; - // } - // } - // } - // _tankStorages.Add(name, collection); - // } - // return true; - //} - - - - - } } }