【超详细】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}")
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值