Golang os.File.Read() and Seek() functions example

package os

Golang os.File.Read() and os.File.Seek() functions usage example

NOTE : Seek is normally used for Random File Access operation, such as reading binary file defined by a struct.

 package main 

 import ( 
 "fmt"
 "io"
 "os"
 )

 func main() {

 file, err := os.Open("binary.dat")

 if err != nil {
 fmt.Println(err)
 return
 }

 defer file.Close()

 // create a 1 kilo bytes buffer to keep chunks that are read

 buffer := make([]byte, 1024)

 // first read

 n, err := file.Read(buffer)

 if err != nil && err != io.EOF {
 panic(err)
 }

 // out the buffer content
 fmt.Println(string(buffer[:n]))

 // start next read at where we stop..which is position 1024 bytes
 // from origin

 newoffset, err := file.Seek(1024, 0)

 if err != nil && err != io.EOF {
 panic(err)
 }

 // next read
 fmt.Println("---------------------------------")

 n, err = file.Read(buffer)

 if err != nil && err != io.EOF {
 panic(err)
 }

 // out the buffer content
 fmt.Println(string(buffer[:n]))

 fmt.Println("New off set : ", newoffset)

 }

References :

http://golang.org/pkg/os/#File.Seek

http://golang.org/pkg/os/#File.Read

Advertisement