You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Unity中使用C#向CSV文件写入数据无内容是什么问题?

问题原因及解决方案

核心问题点

你遇到的文件生成但无内容的问题,核心原因是StreamWriter的缓冲区内容没有被刷新到磁盘,具体问题如下:

  • StreamWriter默认自带内存缓冲区,你调用的WriteLine只是把内容写入了内存缓冲区,没有主动触发刷盘操作的话,内容不会真正写入到磁盘文件中
  • 你的代码在写完所有内容后,既没有手动调用writer.Flush()刷盘,也没有正确释放StreamWriter对象,导致缓冲区内容一直滞留在内存中,最终只生成了空文件
  • 另外路径拼接逻辑存在隐患:直接对Application.dataPath做字符串拼接缺少路径分隔符,可能会生成非法路径,导致你找到的不是实际生成的目标文件

修复方案

推荐使用using语句包裹StreamWriter的创建逻辑,using会在代码块执行结束后自动释放StreamWriter资源,释放过程会自动触发缓冲区刷盘,同时自动关闭文件流,不需要手动编写释放逻辑。
修复后的代码示例如下:

{
    // 用Path.Combine拼接路径,自动适配不同平台的路径分隔符
    // 注意:打包后Application.dataPath是只读路径,存储用户数据建议改为Application.persistentDataPath
    string newFileName = Path.Combine(Application.dataPath, "highscore.csv");
    // using会自动处理资源释放
    using (StreamWriter writer = new StreamWriter(newFileName))
    {
        writer.WriteLine("Score,Time");
        for (int i = 0; i < 5; i++)
        {
            writer.WriteLine(scoresAndSeconds[i, 0].ToString() + "," + scoresAndSeconds[i, 1].ToString());
        } 
    }
}

可选修复方式

如果不想使用using语句,也可以在写完所有内容后,手动调用writer.Flush()刷盘,再调用writer.Close()关闭文件流,效果完全一致。

内容的提问来源于stack exchange,提问作者shadowgamer99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:15:03