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)
, это хороший способ? Или лучше закрыть файл и открыть его перед вторым чтением.Golang, правильный способ перемотки указателя файла
Правильно ли использовать *File
как io.Reader
? Или это лучше сделать r := ioutil.NewReader(data)