您好,登錄后才能下訂單哦!
暫時未整理
package main
import (
"encoding/csv"
"fmt"
"io"
"log"
"os"
)
func main() {
//準備讀取文件
fileName := "D:\\gotest\\src\\source\\test.csv"
fs, err := os.Open(fileName)
if err != nil {
log.Fatalf("can not open the file, err is %+v", err)
}
defer fs.Close()
r := csv.NewReader(fs)
//針對大文件,一行一行的讀取文件
for {
row, err := r.Read()
if err != nil && err != io.EOF {
log.Fatalf("can not read, err is %+v", err)
}
if err == io.EOF {
break
}
fmt.Println(row)
}
//針對小文件,也可以一次性讀取所有的文件
//注意,r要重新賦值,因為readall是讀取剩下的
fs1, _ := os.Open(fileName)
r1 := csv.NewReader(fs1)
content, err := r1.ReadAll()
if err != nil {
log.Fatalf("can not readall, err is %+v", err)
}
for _, row := range content {
fmt.Println(row)
}
//創建一個新文件
newFileName := "D:\\gotest\\src\\source\\newfile.csv"
//這樣打開,每次都會清空文件內容
//nfs, err := os.Create(newFileName)
//這樣可以追加寫
nfs, err := os.OpenFile(newFileName, os.O_RDWR|os.O_CREATE, 0666)
if err != nil {
log.Fatalf("can not create file, err is %+v", err)
}
defer nfs.Close()
nfs.Seek(0, io.SeekEnd)
w := csv.NewWriter(nfs)
//設置屬性
w.Comma = ','
w.UseCRLF = true
row := []string{"1", "2", "3", "4", "5,6"}
err = w.Write(row)
if err != nil {
log.Fatalf("can not write, err is %+v", err)
}
//這里必須刷新,才能將數據寫入文件。
w.Flush()
//一次寫入多行
var newContent [][]string
newContent = append(newContent, []string{"1", "2", "3", "4", "5", "6"})
newContent = append(newContent, []string{"11", "12", "13", "14", "15", "16"})
newContent = append(newContent, []string{"21", "22", "23", "24", "25", "26"})
w.WriteAll(newContent)
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。