当前位置: 首页 > news >正文

【超详细】C#自定义工具类-FileHelper文件工具类

目录

FileHelper工具类

1.主要功能

1.1.文件路径获取

1.2.文本文件操作

1.3.二进制文件操作

1.4.JSON文件操作

1.5.CSV文件操作

1.6.文件常规操作

2.完整代码

3.测试

4.总结


       本篇文章来分享一下FileHelper工具类,FileHelper类用于文件操作,主要为Unity项目提供了丰富的文件处理功能,涵盖多种文件类型和操作场景

FileHelper工具类

1.主要功能

1.1.文件路径获取

       获取特定目录下文件路径的方法:

●GetFileStreamingAssetsPath:获取StreamingAssets目录下文件的路径

●GetFilePersistentPath:获取PersistentDataPath目录下文件的路径

/// <summary>
/// 获取StreamingAssets目录下的文件路径
/// </summary>
/// <param name="fileName">文件名(包含扩展名)</param>
/// <returns>完整的文件路径</returns>
public static string GetFileStreamingAssetsPath(string fileName)
{return Path.Combine(Application.streamingAssetsPath, fileName);
}
/// <summary>
/// 获取PersistentDataPath目录下的文件路径
/// </summary>
/// <param name="fileName">文件名(包含扩展名)</param>
/// <returns>完整的文件路径</returns>
public static string GetFilePersistentPath(string fileName)
{return Path.Combine(Application.persistentDataPath, fileName);
}

1.2.文本文件操作

       支持文本文件的读写:

●WriteTextFile:向指定路径写入文本内容,可指定文件模式(默认创建新文件或覆盖已有文件),会自动创建不存在的目录

●ReadTextFile:从指定路径读取文本内容,返回读取是否成功并通过out参数输出内容

/// <summary>
/// 写入文本文件
/// </summary>
/// <param name="path">文件完整路径</param>
/// <param name="content">要写入的内容</param>
/// <param name="mode">文件打开模式(默认:创建新文件,覆盖现有文件)</param>
/// <returns>是否写入成功</returns>
public static bool WriteTextFile(string path, string content, FileMode mode = FileMode.Create)
{try{//获取文件所在目录string directory = Path.GetDirectoryName(path);//确保目录存在if (!Directory.Exists(directory)){Directory.CreateDirectory(directory);}//使用UTF8编码写入文件using (FileStream fs = new FileStream(path, mode, FileAccess.Write))using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)){sw.Write(content);}return true;}catch (Exception e){Debug.LogError($"写入文本文件失败: {e.Message}");return false;}
}
/// <summary>
/// 读取文本文件
/// </summary>
/// <param name="path">文件完整路径</param>
/// <param name="content">输出的文件内容</param>
/// <returns>是否读取成功</returns>
public static bool ReadTextFile(string path, out string content)
{content = "";try{if (!File.Exists(path)){Debug.LogWarning($"读取文本文件失败: 文件不存在,路径: {path}");return false;}using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)){content = new StreamReader(fs).ReadToEnd();}return true;}catch (Exception e){Debug.LogError($"读取文本文件异常: {e.Message}");return false;}
}

1.3.二进制文件操作

       支持二进制数据的读写:

●WriteBinaryFile:将字节数组写入指定路径的二进制文件,会验证数据有效性并自动创建目录

●ReadBinaryFile:从指定路径读取二进制文件内容,返回字节数组

/// <summary>
/// 写入二进制文件
/// </summary>
/// <param name="path">文件完整路径</param>
/// <param name="data">二进制数据</param>
/// <param name="mode">文件打开模式(默认:创建新文件,覆盖现有文件)</param>
/// <returns>是否写入成功</returns>
public static bool WriteBinaryFile(string path, byte[] data, FileMode mode = FileMode.Create)
{try{//验证数据有效性if (data == null || data.Length == 0){Debug.LogWarning("写入二进制文件失败: 数据为空");return false;}//确保目录存在string directory = Path.GetDirectoryName(path);if (!Directory.Exists(directory)){Directory.CreateDirectory(directory);}//写入二进制数据using (FileStream fs = new FileStream(path, mode, FileAccess.Write)){fs.Write(data, 0, data.Length);}return true;}catch (Exception e){Debug.LogError($"写入二进制文件失败: {e.Message}");return false;}
}
/// <summary>
/// 读取二进制文件
/// </summary>
/// <param name="path">文件完整路径</param>
/// <param name="data">输出的二进制数据</param>
/// <returns>是否读取成功</returns>
public static bool ReadBinaryFile(string path, out byte[] data)
{data = null;try{if (!File.Exists(path)){Debug.LogWarning($"读取二进制文件失败: 文件不存在,路径: {path}");return false;}//读取二进制数据using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)){data = new byte[fs.Length];fs.Read(data, 0, data.Length);}return true;}catch (Exception e){Debug.LogError($"读取二进制文件异常: {e.Message}");return false;}
}

1.4.JSON文件操作

       基于Unity的JsonUtility实现JSON序列化和反序列化:

●WriteJsonFile:将对象序列化为JSON字符串并写入文件,支持格式化输出

●ReadJsonFile:从文件读取JSON字符串并反序列化为指定类型的对象

/// <summary>
/// 写入JSON文件
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="path">文件完整路径</param>
/// <param name="obj">要序列化的对象</param>
/// <param name="prettyPrint">是否格式化输出(默认:true)</param>
/// <returns>是否写入成功</returns>
public static bool WriteJsonFile<T>(string path, T obj, bool prettyPrint = true)
{try{if (obj == null){Debug.LogWarning("写入JSON文件失败: 对象为空");return false;}//序列化为JSON字符串string jsonData = JsonUtility.ToJson(obj, prettyPrint);return WriteTextFile(path, jsonData);}catch (Exception e){Debug.LogError($"写入JSON文件失败: {e.Message}");return false;}
}
/// <summary>
/// 读取JSON文件
///
http://www.dtcms.com/a/410504.html

相关文章:

  • 43.传输层协议TCP(下)
  • wordpress 会议网站设计网站网站名称
  • wordpress设置多站点西安市建筑工程信息网
  • 政务系统国产化的“教科书级“实践:MongoDB平滑迁移成功案例解析
  • 乾元通渠道商中标民勤县应急指挥能力提升项目
  • 编程语言top5对比分析!
  • 【第五章:计算机视觉-项目实战之图像分割实战】1.图像分割理论-(2)图像分割衍生:语义分割、实例分割、弱监督语义分割
  • 5G开户中的RAT限制(无线接入技术限制)
  • PHP 快速集成 ChatGPT 用 AI 让你的应用更聪明
  • 网站推销话术深圳前十vi设计公司
  • 2025 PHP7/8 实战入门:15 天精通现代 Web 开发——第 14 课:安全开发实践
  • 中国网站的建设家装公司网站建设
  • VS类设计器
  • 大数据数仓笔试题
  • 张量并行:列并行与行并行的原理与应用
  • 基于机器学习的智能贫血分析预测系统
  • 【论文阅读 | WACV 2025 | MCOR:通过跨模态信息互补和余弦相似性通道重采样模块增强的多光谱目标检测】
  • 网站欣赏网站wordpress圆圈特效
  • iOS 可分发是已经上架了吗?深入解析应用分发状态、ipa 文件上传、TestFlight 测试与 App Store 审核流程
  • 【无标题】SceneSplat:基于视觉-语言预训练的3DGS场景理解
  • 《IDEA 2025长效使用配置指南:有效期配置至2099年实战之JetBrains全家桶有效》​
  • Vue Router 命名路由学习笔记
  • 怎么做网上网站的网站网站备案ip地址段
  • 哈尔滨可以做网站的公司frontpage做的网站好不好
  • 云手机:云计算的灵动化身
  • 中英文网站怎么做房子装修价格
  • 有哪些好的做兼职网站有哪些网站引用优酷
  • 业务宣传网站建设wordpress 图片路径加密
  • 香港高防服务器本地清洗与国际清洗的区别
  • Node.js 文件删除:完整指南