golang-csv文件追加寫入內容

需求

判斷某一文件夾是否存在,文件夾內csv文件是否存在,往文件內追加寫入內容

相關函數

1.time.Now() 獲取當前時間,返回數據類型為golang時間

<code>func Now() Time

eg:
today := time.Now()/<code>


golang-csv文件追加寫入內容

2.Unix() 時間格式轉時間戳

<code>func Unix(sec int64, nsec int64) Time

eg:
time.Now.Unix()/<code>

3.Format() 格式化時間、時間戳

<code>today := time.Now().Unix()
today_time := time.Unix(today, 0).Format("2006-01-02 15:04:05")
today_time_2 := today.Format("2006-01-02 15:04:05")/<code>


golang-csv文件追加寫入內容

4.Stat() 獲取文件屬性

<code>func Stat(name string) (fi FileInfo, err error)

eg:
_, err := os.Stat("./csv/test.csv")/<code>

5.MkdirAll() 根據傳入地址,遞歸創建文件夾

<code>func MkdirAll(path string, perm FileMode) error

eg:
os.MkdirAll("./csv/test.csv", os.ModePerm)/<code>

6.OpenFile()打開文件

<code>func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

eg:
file, err := os.OpenFile(file_path, os.O_RDWR, os.ModePerm)/<code>

7.操作csv相關函數

<code>func NewWriter(w io.Writer) *Writer

func (w *Writer) Flush()

func (w *Writer) Write(record []string) (err os.Error)

func (w *Writer) WriteAll(records [][]string) (err os.Error)/<code>

8.Seek() 將下一個讀或寫文件的偏移量設置為偏移量,根據其解釋:0表示相對於文件的原點,1表示相對於當前偏移量,2表示相對於結尾

<code>func (f *File) Seek(offset int64, whence int) (ret int64, err error)/<code>

完整demo

<code>package main

import (

\t"fmt"
\t"os"
\t"encoding/csv"
\t"time"
\t"io"
)

/**
*csv文件追加寫入neir
*author 百思達
*/
func main() {
\t//csv文件以天數命名
\ttoday := time.Now().Unix()
\ttoday_time := time.Unix(today, 0).Format("2006-01-02")
\t//文件路徑
\tfile_path := "./csv/" + today_time + ".csv"// eg: ./csv/2020-03-08.csv
\t//判斷文件夾是否存在,不存在則創建
\t_, err := os.Stat("./csv")
if err != nil{
if os.IsNotExist(err) {
\t\t\t\t\terr = os.MkdirAll("./csv", os.ModePerm)
\t\t\t\t if err != nil {
\t\t\t \t panic(err)
\t\t\t }
}
\t}
\t//打開操作-不存在則創建
\tfile, _ := os.OpenFile(file_path, os.O_RDWR|os.O_CREATE, os.ModePerm)
\tfile.Seek(0, io.SeekEnd)//註釋本行則不會追加寫入
\t//關閉文件
\tdefer file.Close()
\t//寫入操作
\tw := csv.NewWriter(file)
\tw.Write([]string{"123", "234234", "345345", "234234"})
\t//必須刷新,否則內容無法寫入文件
\tw.Flush()
\t
\tfmt.Println("ok")
}/<code>

結果


golang-csv文件追加寫入內容


分享到:


相關文章: