gob包读写二进制数据

1、存储数据

func storedata(data interface{}, filename string){
   //buffer为bytes.Buffer结构,这个结构实际上就是一个拥有Read和Write方法的可变长度字节缓冲区,即bytes.Buffer既是读取器也是写入器
mybuffer := new(bytes.Buffer)
//将缓冲区数据传递给NewEncoder函数,以此来创建出一个gob编码器 encode := gob.NewEncoder(mybuffer)
//调用编码器的Encode函数,将数据data写入到mybuffer中 err := encoder.Encode(data)
//将mybuffer数据写入到文件中 err = ioutil.WriteFile(filename, mybuffer.Bytes(), 0600) }

 2、加载数据

func loaddata(data interface{}, filename string){
  //读取文件数据存入到原始数据raw中
  raw, err := ioutil.ReadFile(filename)

  //根据原始数据raw创建缓冲区buffer,借此为原始数据raw提供相应的Read方法和Write方法
  buffer := bytes.NewBuffer(raw)

  //调用NewDecoder函数,为缓冲区创建相应的解码器
  dec := gob.NewDecoder(buffer)

  //用解码器读取原始数据,并存入到data中
  err = dec.Decode(data)
}

 

3、使用

存储数据post到post1文件中:

storedata(post, "post1")

读取文件post1数据到post中:

loaddata(&post,"post1")

 

posted @ 2019-07-02 09:00  施凯sky  阅读(421)  评论(0)    收藏  举报