Пакет os
import "os"
func (* File) Seek
func (f *File) Seek(offset int64, whence int) (ret int64, err error)
Seek устанавливает смещение дляnext Чтение или запись файла в смещение, интерпретируется в соответствии с тем, откуда: 0 означает относительно начала файла, 1 означает относительно текущего смещения, а 2 означает относительно конца.Возвращает новое смещение и ошибку, если есть.Поведение Seek для файла, открытого с помощью O_APPEND, не указано.
Пакет io
import "io"
Поиск значений откуда.
const (
SeekStart = 0 // seek relative to the origin of the file
SeekCurrent = 1 // seek relative to the current offset
SeekEnd = 2 // seek relative to the end
)
Например,
package main
import (
"fmt"
"io"
"os"
)
func main() {
filePath := "test.file"
byteOffset := 6
f, err := os.Open(filePath)
if err != nil {
panic(err)
}
defer f.Close()
_, err = f.Seek(int64(byteOffset), io.SeekStart)
if err != nil {
panic(err)
}
buf := make([]byte, 16)
n, err := f.Read(buf[:cap(buf)])
buf = buf[:n]
if err != nil {
if err != io.EOF {
panic(err)
}
}
fmt.Printf("%s\n", buf)
}
Выход:
$ cat test.file
0123456789
$ go run seek.go
6789
$