【发布时间】:2017-07-03 20:51:06
【问题描述】:
package main
import (
"bufio"
"encoding/csv"
"fmt"
"io"
"log"
"os"
)
func main() {
data, err := os.Open("cc.csv")
defer data.Close()
if err != nil {
log.Fatal(err)
}
s := bufio.NewScanner(data)
for s.Scan() {
fmt.Println(s.Text())
if err := s.Err(); err != nil {
panic(err)
}
}
// Is it a proper way?
data.Seek(0, 0)
r := csv.NewReader(data)
for {
if record, err := r.Read(); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
} else {
fmt.Println(record)
}
}
}
我在这里使用两个阅读器来读取 csv 文件。
要倒带我使用data.Seek(0, 0) 的文件,这是一个好方法吗?或者最好在二读之前关闭文件并再次打开。
将*File 用作io.Reader 是否也正确?或者最好是r := ioutil.NewReader(data)
【问题讨论】: