using System.Diagnostics; using System.IO; using System.Text; using System.Threading.Tasks; using Debug = UnityEngine.Debug; namespace Framework.Utils { /// /// 文件操作工具类 /// public static class FileUtils { /// /// 异步读取文本文件 /// /// 文件路径 /// 编码格式,默认UTF8 /// 文件内容 public static async Task ReadTextAsync(string filePath, Encoding encoding = null) { try { if (!File.Exists(filePath)) { Debug.LogError($"文件不存在: {filePath}"); return null; } encoding = encoding ?? Encoding.UTF8; using (StreamReader reader = new StreamReader(filePath, encoding)) { return await reader.ReadToEndAsync(); } } catch (System.Exception ex) { Debug.LogError($"读取文件失败: {filePath}\n{ex}"); return null; } } /// /// 异步写入文本文件 /// /// 文件路径 /// 文件内容 /// 编码格式,默认UTF8 /// 是否追加模式 /// 是否写入成功 public static async Task WriteTextAsync(string filePath, string content, Encoding encoding = null, bool append = false) { try { string directory = Path.GetDirectoryName(filePath); if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) { Directory.CreateDirectory(directory); } encoding = encoding ?? Encoding.UTF8; using (StreamWriter writer = new StreamWriter(filePath, append, encoding)) { await writer.WriteAsync(content); } return true; } catch (System.Exception ex) { Debug.LogError($"写入文件失败: {filePath}\n{ex}"); return false; } } /// /// 检查文件是否存在 /// /// 文件路径 /// 是否存在 public static bool Exists(string filePath) { return File.Exists(filePath); } /// /// 删除文件 /// /// 文件路径 /// 是否删除成功 public static bool Delete(string filePath) { try { if (File.Exists(filePath)) { File.Delete(filePath); return true; } return false; } catch (System.Exception ex) { Debug.LogError($"删除文件失败: {filePath}\n{ex}"); return false; } } /// /// 使用系统默认程序打开文件 /// /// 文件完整路径 /// 是否成功打开 public static bool OpenFile(string filePath) { try { if (!File.Exists(filePath)) { Debug.LogError($"文件不存在: {filePath}"); return false; } // 使用ProcessStartInfo来指定正确的打开方式 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = filePath; startInfo.UseShellExecute = true; // 使用系统shell来执行,这样会用默认程序打开文件 Process.Start(startInfo); return true; } catch (System.Exception ex) { Debug.LogError($"打开文件失败: {filePath}\n{ex}"); return false; } } } }