C#保存二维double数组至csv文件

  1. 引用“System.Windows.Forms”
  2. Using指令:
using System.IO;
using System.Windows.Forms;
  1. 代码块:
/// <summary>
/// 保存二维double数组至csv文件
/// </summary>
/// <param name="input">输入二维double数组</param>
/// <param name="filename">待保存文件名</param>
private void Savecsv(double[,] input, string filename = "Output")
{
    // This text is always added, making the file longer over time
    // if it is not deleted.
    string path = System.Windows.Forms.Application.StartupPath + "\\" + filename + ".csv";
    //string s = path.Substring(0, path.LastIndexOf('\\'));    
    //Directory.CreateDirectory(s);//如果文件夹不存在就创建它(用于将数据保存至指定文件夹)
    using (System.IO.StreamWriter sw = System.IO.File.AppendText(path))//创建或追加,用于新增内容时
    //using (System.IO.StreamWriter sw = System.IO.File.CreateText(path))//创建或覆盖,用于覆盖内容时
    {
        //逐行
        for (int i = 0; i < input.GetLength(0); i++)
        {
            //逐列
            for (int j = 0; j < input.GetLength(1); j++)
            {
                sw.Write(input[i, j] + ",");
            }
            sw.WriteLine();
        }
    }
}

以上代码块参考源

以下为旧实现方式:

// <summary>
/// 保存二维double数组至csv文件
/// </summary>
/// <param name="input">输入二维数组</param>
/// <param name="filename">待保存文件名</param>
public void Savecsv(double[,] input, string filename = "output")
{
    //打开文件流
    FileStream fs;
    OpenFileStream(out fs, Application.StartupPath + "\\" + filename + ".csv");

    //写入数据至数据流
    StreamWriter sw = new StreamWriter(fs);
    WriteStream(input, ref sw);

    //关闭数据流和文件流
    sw.Close();
    fs.Close();
}

/// <summary>
/// 打开文件流
/// </summary>
/// <param name="fs">文件流</param>
/// <param name="path">路径</param>
public void OpenFileStream(out FileStream fs, string path)
{
    //判断指定文件路径是否存在
    if (!File.Exists(path))
    {
        //指定文件路径不存在,则创建文件流
        fs = new FileStream(path, FileMode.Create, FileAccess.Write);
    }
    else
    {
        //指定文件路径存在,则打开文件流
        fs = new FileStream(path, FileMode.Open, FileAccess.Write);
    }
}

/// <summary>
/// 写入数据至数据流
/// </summary>
/// <param name="input">输入二维double数组</param>
/// <param name="sw">流</param>
public void WriteStream(double[,] input, ref StreamWriter sw)
{
    //逐行
    for (int i = 0; i < input.GetLength(0); i++)
    {
        //逐列
        for (int j = 0; j < input.GetLength(1); j++)
        {
            sw.Write(input[i, j] + ",");
        }
        sw.WriteLine();
    }
}
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值