十八、文件持久化(CSV&GOB)

1.CSV

encoding/csv 包提供对 csv 文件读写的操作
a) 常用结构体
⚫ Reader
常用函数
➢ NewReader
常用方法
➢ Read
➢ ReadAll
⚫ Writer
常用函数
➢ NewWriter
常用方法
➢ Write
➢ WriteAll
➢ Flush
(1)Csvreader

package main

import (
   "encoding/csv"
   "fmt"
   "io"
   "os"
)

func main() {
   file,err := os.Open("user.csv")
   if err == nil {
      defer file.Close()
      //这里也可以用带缓冲的
      reader :=  csv.NewReader(file)
      for {
         line,err := reader.Read()
         if err != nil {
            if err != io.EOF{
               fmt.Println(err)
            }
            break
         }else {
            fmt.Println(line)
         }
      }
   }
}

(2)Csvwriter

package main

import (
   "encoding/csv"
   "os"
)

func main() {
   file ,err:= os.Create("user.csv")
   if err != nil {
   }else if err == nil  {
      defer file.Close()
      writer := csv.NewWriter(file)
      writer.Write([]string{"ID","Age","Name"})
      writer.Write([]string{"1","24","c"})
      writer.Flush()
   }
}

2.GOB

encoding/gob 包提供了对数据结构进行二进制序列化的功能
a) 常用函数
⚫ Register:注册 gob 编解码记录值
⚫ RegisterName:注册 gob 编解码记录值,并指定名称
b) 常用结构体
⚫ Encoder
常用函数
➢ NewEncoder: 创建编码器
常用方法
➢ Encode:将对象进行编码到流对象中
⚫ Decoder
常用函数
➢ NewDecoder:创建解码器
常用方法
➢ Decode:将流对象中的数据编码到对象中
(1)Gobdecode

package main

import (
   "encoding/gob"
   "fmt"
   "os"
)
type User struct {
   ID int
   Name  string
}
func main() {
   //把文件中的数据放在内存中
   users := map[int]User{}
   file,err := os.Open("user.gob")
   if err == nil {
      defer  file.Close()
      decoder := gob.NewDecoder(file)
      decoder.Decode(&users)
      fmt.Println(users)
   }
}

(2)Gobencode

package main

import (
   "encoding/gob"
   "os"
)


type User struct {
   ID int
   Name  string
}

func main() {
   users := map[int]User{
      1:{1,"AA"},
      2:{2,"BB"},
      3:{3,"CC"},
   }
   //把内存中的数据存在文件中
   file,err := os.Create("user.gob")
   if err == nil {
      defer file.Close()
      encoder := gob.NewEncoder(file)
      encoder.Encode(users)
   }

}
发布了112 篇原创文章 · 获赞 12 · 访问量 6676

猜你喜欢

转载自blog.csdn.net/weixin_45413603/article/details/104963153