首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CSV文件读写功能

CSV文件读写功能

原创
作者头像
用户12337335
发布2026-06-10 22:03:59
发布2026-06-10 22:03:59
760
举报

.csv文件后缀是工业开发中用来保存检测记录的一种格式。CSV 本质:纯文本文件,,逗号作为列分隔符,换行作为行分隔符,可用 Excel / 记事本直接打开。

代码语言:javascript
复制
/// <summary>
/// .csv是工业开发中用来保存检测记录的一种格式,类似于 Excel表格的形式
/// </summary>
/// <param name="data">数据</param>
/// <param name="result">内容追加</param>
public void WriteCSV(string data, string result)
{
    string path =Directory.GetCurrentDirectory()+"\\Data";
    if (!Directory.Exists(path))
    {
        Directory.CreateDirectory(path);
    }
    //文件:这里保存成csv格式就代表以纯文本形式存储表格数据。
    string fileName = $"{path}\\测试-{DateTime.Now.ToString("yyyy-MM-dd")}.csv";
    //有表头,第一次创建文件的时候可以先给表头配置好
    if (!File.Exists(fileName)) { 
        //创建文件配置表头
        FileStream fs = new FileStream(fileName,FileMode.Create,FileAccess.Write);
        StringBuilder sb = new StringBuilder();
        //模拟质检的数据格式
        sb.Append("时间:").Append(",").Append("检测状态:").Append(",").Append("数据分析:").Append(",").Append("结果:");
        //写入
        StreamWriter sw =new StreamWriter(fs,Encoding.Default);
        sw.WriteLine(sb);
        sw.Close();
        sw.Dispose();
        fs.Close();
        fs.Dispose();
    }
    else
    {
        //追加
        StreamWriter sw = new StreamWriter(fileName,true, Encoding.Default);
        StringBuilder sb = new StringBuilder();
        //模拟质检的数据格式
        sb.Append(DateTime.Now.ToString("yyyy-MM-ss")).Append(",").Append("NG").Append(",").Append(data).Append(",").Append(result);
        sw.WriteLine(sb);
        sw.Close();
        sw.Dispose();
                
    }
}
代码语言:javascript
复制
public string ReadFileData()
{

    string path = Directory.GetCurrentDirectory() + "\\Data";
    //文件这里,将来可以拓展成目录性质。。。
    string fileName = $"{path}\\测试-2026-06-09.csv";
    StreamReader sr = new StreamReader(fileName, Encoding.Default);
    StringBuilder stringBuilder = new StringBuilder(sr.ReadLine());
    return stringBuilder.ToString();
}

功能方法:WriteCSV 方法:自动创建Data文件夹,按日期命名 CSV 文件,文件首次创建时写入表头,后续调用追加一行质检数据(时间、检测状态、分析数据、结果)。

Directory.GetCurrentDirectory:获取当前运行目录(所在文件夹)

+"\\Data"拼接子文件夹名,最终路径示例:D:\项目\bin\Debug\Data

Directory.Exists(path):判断指定文件夹是否存在

!取反:如果文件夹不存在(在这里是当不存在会运行if里的代码)

Directory.CreateDirectory(path)创建空文件夹,多级目录也可自动创建。(当判断不存在则创建这个文件夹)

作用:保证后续写入文件时,文件夹一定存在,避免 “路径不存在” 异常。

​编辑

字符串插值$""快速拼接路径 + 文件名。

DateTime.Now获取当前系统时间

ToString("yyyy-MM-dd")时间格式化 → 年-月-日,例如:2026-06-10

最终文件名示例:Data\测试-2026-06-10.csv

规则:每天生成一个独立 CSV 文件,按日期分割日志,方便管理。

​编辑

File.Exists(fileName):判断当天的 CSV 文件是否已存在

FileStream fs底层文件流,负责操作磁盘文件字节流。

FileMode.Create文件不存在则会新建,已存在则覆盖掉之前的文件清空

FileAccess.Write权限为写入

StringBuilder:高性能字符串拼接。

Append: 直译追加:不覆盖原有内容,把新内容写到文件末尾,是日志、CSV 记录最常用的模式

特性

  • 文件不存在:自动创建文件,再写入内容
  • 文件已存在:内容追加到末尾,原有数据保留
  • 内部自动创建 / 释放文件流,不用手动 Close/Dispose
  • 适合:整行文本、CSV、日志、小体量数据

WriteLine:写入内容并自动换行,符合表格行规则

Close() / Dispose()关闭流、释放系统文件资源,防止文件被占用

​编辑

文件已存在 → 追加一行检测数据

new StreamWriter(fileName, true, ...)

第二个参数 true追加模式,新内容写到文件末尾,不覆盖原有数据。

传入参数 data(自定义分析数据)

传入参数 result(检测结果)

​编辑

  • 路径逻辑和写入方法一致,定位到Data文件夹。
  • 硬编码文件名:固定读取 测试-2026-06-09.csv,无法动态读取当天文件。
  • StreamReader:文本文件读取流,和StreamWriter成对使用。
  • sr.ReadLine()只读取文件第一行(也就是 CSV 表头),读完自动换行指针下移。
  • 最终把第一行内容转为字符串返回。

该方法功能总结

仅能读取指定旧文件的表头,无法读取全部数据、指定行、当天文件,扩展性很差。

这段代码仅适合入门学习、理解文件读写逻辑,工业 / 正式项目绝对不能直接上线

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 该方法功能总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档