В некоторых случаях может потребоваться прочитать или записать что-то в определенное место в файле. К примеру, это может быть очень большой файл, но мы знаем где именно нужно выполнить изменение в нем, для этого не нужно читать его всего. Данная инструкция показывает, как использовать поиск позиции в контексте операций над обычным текстовом файле файла.

1. Создайте файл flatfile.txt со следующим содержимым:

Премиум 👑 канал по Golang

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎

Подписаться на канал

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК ЧАТ в Telegram


2. Создайте файл fileseek.go со следующим содержимым:

3. Запустите код через go run fileseek.go;
4. Посмотрите на вывод:

файлы golang

5. Отображение файла в xxd flatfile.txt:

файлы go

Как написать код для программы, что находит позицию в файле?

В предыдущем примере используется файл flatfile.txt, над которым выполняется поиск в нем, прочтение и запись в определенную позицию в файле. В общем и целом для перемещения позиции текущего указателя в File может использоваться метод Seek. Он принимает два аргумента, это позиция и то, как считать позицию, 0 — относительно оригиналу файла, 1 — относительно текущей позиции, 2 — относительно конца строки. В таком случае вы можете переместить курсор внутри файла. Метод Seek используется для имплементации функции readLine в коде выше.

os.File также содержит методы ReadAt и WriteAt. При использовании методов, байты должны быть записаны/прочитаны, также должна даваться отправная точка. Это упрощает запись и чтение для определенной позиции в файле.

На заметку: Обратите внимание, что в примере предполагается, что каждая руна составляет один байт, что не обязательно должно быть так для специальных символов и так далее.

5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии