112 lines
3.7 KiB
C#
112 lines
3.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using UnityEngine;
|
|
|
|
public class FileUtil
|
|
{
|
|
/// <summary>
|
|
/// Сохраняет текст в файл
|
|
/// </summary>
|
|
public static (bool OK, string Message) SaveText(string fileName, string filePath, string content)
|
|
{
|
|
try
|
|
{
|
|
string fullPath = Path.Combine(filePath, fileName);
|
|
string directory = Path.GetDirectoryName(fullPath);
|
|
|
|
// Создаем директорию, если её нет
|
|
if (!Directory.Exists(directory))
|
|
{
|
|
Directory.CreateDirectory(directory);
|
|
}
|
|
|
|
File.WriteAllText(fullPath, content);
|
|
return (true, $"Файл успешно сохранен: {fullPath}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Debug.LogError($"Ошибка при сохранении файла: {ex.Message}");
|
|
return (false, $"Ошибка сохранения: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Загружает текст из файла
|
|
/// </summary>
|
|
public static (bool OK, string Message, string Content) LoadText(string fileName, string filePath)
|
|
{
|
|
try
|
|
{
|
|
string fullPath = Path.Combine(filePath, fileName);
|
|
|
|
if (!File.Exists(fullPath))
|
|
{
|
|
return (false, $"Файл не найден: {fullPath}", null);
|
|
}
|
|
|
|
string content = File.ReadAllText(fullPath);
|
|
return (true, $"Файл успешно загружен: {fullPath}", content);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Debug.LogError($"Ошибка при загрузке файла: {ex.Message}");
|
|
return (false, $"Ошибка загрузки: {ex.Message}", null);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Сохраняет JSON объект в файл
|
|
/// </summary>
|
|
/// <param name="fileName">Имя файла</param>
|
|
/// <param name="filePath">Путь к файлу</param>
|
|
/// <param name="data">Объект для сохранения</param>
|
|
/// <returns>Кортеж (bool OK, string Message)</returns>
|
|
public static (bool OK, string Message) SaveJson<T>(string fileName, string filePath, T data)
|
|
{
|
|
try
|
|
{
|
|
string json = JsonUtility.ToJson(data, true);
|
|
return SaveText(fileName, filePath, json);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Debug.LogError($"Ошибка при сохранении JSON: {ex.Message}");
|
|
return (false, $"Ошибка сохранения JSON: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Загружает JSON объект из файла
|
|
/// </summary>
|
|
/// <param name="fileName">Имя файла</param>
|
|
/// <param name="filePath">Путь к файлу</param>
|
|
/// <returns>Кортеж (bool OK, string Message, T Data)</returns>
|
|
public static (bool OK, string Message, T Data) LoadJson<T>(string fileName, string filePath) where T : new()
|
|
{
|
|
try
|
|
{
|
|
var result = LoadText(fileName, filePath);
|
|
|
|
if (!result.OK)
|
|
{
|
|
return (false, result.Message, default(T));
|
|
}
|
|
|
|
T data = JsonUtility.FromJson<T>(result.Content);
|
|
|
|
if (data == null)
|
|
{
|
|
return (false, "Ошибка десериализации JSON", default(T));
|
|
}
|
|
|
|
return (true, $"JSON успешно загружен: {fileName}", data);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Debug.LogError($"Ошибка при загрузке JSON: {ex.Message}");
|
|
return (false, $"Ошибка загрузки JSON: {ex.Message}", default(T));
|
|
}
|
|
}
|
|
}
|