zoukankan      html  css  js  c++  java
  • RTMP推流协议视频直播点播流媒体平台EasyDSS定制Go 语言生成 CSV 文件功能介绍

    在TSINGSEE青犀视频云边端架构视频直播点播平台EasyDSS部分定制项目中,客户提出生成归档清单的要求,即生成 CSV 文件由客户进行统计操作。因此我们研发人员进行了生成 CSV 文件的功能编写。

    关于EasyDSS视频直播点播平台,TSINGSEE青犀视频也提供过其他很多的定制项目,如果有需要也联系我们了解,本文讲的CSV 文件为逗号分隔值文件格式,其中 CSV 为Comma-Separated Values 的缩写,即使用逗号分隔数据的数据,以下数据就是 CSV 文件的内容。

    如果使用 Office 套件打开的话,将会按照一定的格式显示。

    CSV 文件和微软的 excel 文件很像,但是实质并不相同, excel 文件内部是微软自定义的一种格式,并不是文本格式,而 csv 文件本质上是文本文件,可以直接采用记事本打开,在大量数据的存储上更建议使用excel文件。

    Go语言中实现写入csv文件的代码如下:

    // 创建 CSV 文件
    func CreateCsvFile(filePath string, datas *[][]string) error {
       file, err := os.OpenFile(filePath, os.O_CREATE|os.O_RDWR, 0644)
       if err != nil {
          os.Remove(filePath)
          return err
       }
       defer file.Close()
    
       w := csv.NewWriter(file)
       err = w.WriteAll(*datas)
       if err != nil {
          os.Remove(filePath)
          return err
       }
       w.Flush()
    
       return nil
    }
    
    

    其中使用了 “encoding/csv” 这个官方库。
    测试代码如下:

    func TestCreateCsvFile(t *testing.T) {
       filePath := "D://test1.csv"
       datas := [][]string{
          {"1", "数据1", "楞伽经"},
          {"2", "数据2", "唯我独尊"},
          {"3", "数据3", "天上天下"},
       }
       fmt.Println(CreateCsvFile(filePath, &datas))
    
       filePath = "D://test2.csv"
       datas = [][]string{
          {"1", "one", "blue"},
          {"2", "two", "green"},
          {"3", "three", "rust"},
       }
       fmt.Println(CreateCsvFile(filePath, &datas))
    }
    
    

    正常生成了文件,并且数据内容正确。

    注:

    在网络上有人建议添加以下代码来处理中文乱码问题。

    file.WriteString("xEFxBBxBF")
    
    

    该行代码的含义为提前在文件中写入UTF-8 BOM的信息,来代表此文件是 UTF-8 BOM 编码的格式。经过测试,不添加此代码,生成的文件已经是 UTF-8 文件了,因此删除此行代码。

  • 相关阅读:
    jQuerychicun
    css3动画
    app开发,H5+CSS3页面布局小tips
    函数基础
    函数
    冒泡排序
    关于Vue+iview的前端简单的导入数据(excel)
    关于Vue+iview的简单下拉框滚动加载
    ES6中set的用法回顾
    百度地图api设置点的自定义图标不显示
  • 原文地址:https://www.cnblogs.com/easydss/p/14049437.html
Copyright © 2011-2022 走看看