/// <summary> /// Try load data by file name and type. /// </summary> /// <param name="_name"> File name. </param> /// <param name="_data"> Save data. </param> /// <typeparam name="T"> Data type. </typeparam> private static bool TryLoadData <T>(string _name, out T _data) where T : SaveData { try { string _path = SavePath.GetName() + _name; _data = default; if (File.Exists(_path) == false) { return(false); } FileStream _stream = new FileStream(_path, FileMode.Open, FileAccess.Read, FileShare.None); _data = (T)binaryFormatter.Value.Deserialize(_stream); _stream.Close(); } catch (Exception _exception) { Debugger.Log($"Loading data failed: {_exception.Message}"); _data = null; return(false); } return(true); }
/// <summary> /// Write data in file. /// </summary> private static void WriteInFile <T>(T _data) where T : SaveData { string _filePath = SavePath.GetName() + _data.Name; FileStream _stream = new FileStream(_filePath, FileMode.Create, FileAccess.Write, FileShare.None); binaryFormatter.Value.Serialize(_stream, _data); _stream.Close(); }
/// <summary> /// Check if data file was created in default directory. /// </summary> /// <param name="_name"> File name. </param> /// <typeparam name="T"> Data type. </typeparam> /// <returns></returns> private static bool CheckIsCreated <T>(string _name) { string _path = SavePath.GetName() + _name; if (File.Exists(_path) == false) { return(false); } if (IsPathValid <T>(_name) == false) { return(false); } return(true); }
/// <summary> /// Remove all data files. /// </summary> public static void RemoveAll() { try { string[] _names = Directory.GetFiles(SavePath.GetName()); for (int i = 0; i < _names.Length; i++) { File.Delete(_names[i]); } } catch (Exception _exception) { Debugger.Log($"Deleting all files failed: {_exception.Message}"); } }
/// <summary> /// Check if file corresponds the requested type. /// </summary> /// <param name="_name"> File name. </param> /// <typeparam name="T"> Data type. </typeparam> private static bool IsPathValid <T>(string _name) { string _path = SavePath.GetName() + _name; if (File.Exists(_path) == false) { return(true); } FileStream _stream = new FileStream(_path, FileMode.Open); object _data = binaryFormatter.Value.Deserialize(_stream); _stream.Close(); if (_data is T) { return(true); } return(false); }
/// <summary> /// Delete file from default directory. /// </summary> /// <param name="_name"> File name. </param> private static void DeleteFile(string _name) { string _path = SavePath.GetName() + _name; File.Delete(_path); }