steevehook
12/25/2019 - 9:59 PM

Find the end of a JSON file

func findJSONEnd(file *os.File, end byte) int64 {
	fileInfo, err := file.Stat()
	if err != nil {
		log.Fatalf("could not read file stat: %v", err)
	}
	size := fileInfo.Size()
	var ret int64
	for i := 1; i <= int(size); i++ {
		bs := make([]byte, 1)
		r, err := file.Seek(-int64(i), io.SeekEnd)
		if err != nil {
			log.Fatalf("could not seek at: %d: %v", -int64(i), err)
		}
		_, err = file.Read(bs)
		if err != nil {
			log.Fatalf("could read from file: %v", err)
		}
		if bs[0] == end {
			ret = r
		}
	}
	return ret
}