Skip to content

Чтение файлов в Go

Из этой темы ты узнаешь:

  • В чём состоит работа с файлами.

  • Функционал пакетов ioutil, os, io, bufio.

  • Как происходит чтение и перемещение в файле.

  • Как происходит закрытие файла.

Работа с файлами

Чтение и запись файлов — это базовая задача, необходимая для решения множества задач. Для начала мы рассмотрим несколько примеров чтения файлов.

Чтение файлов требует проверок множества вызовов на наличие ошибок. Эта функция-хелпер поможет нам обрабатывать ошибки в одном месте.

Пакет ioutil

Возможно, основная задача чтения файлов — это сохранение всего содержимого файла в памяти.

Пакет os

Тебе часто может потребоваться больший контроль над тем, как и какие части файла читаются. Для решения этих задач начни с открытия файла, чтобы получить значение os.File..

Чтение, перемещение в файле

Прочитаем несколько байт с начала файла. Будет прочитано первые 5 байт, но также выведем, сколько фактически было прочитано.

Кроме того, ты можешь получить конкретное место файла с помощью Seek и выполнить Read оттуда.

Пакето io

Пакет io предоставляет некоторые функции, которые могут быть полезны для чтения файлов. Например, чтение, подобное приведенному выше, может быть более надежно реализовано с помощью ReadAtLeast.

Тут нет встроенной перемотки назад, но для этого можно использовать Seek(0, 0).

Пакет bufio

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

Закрытие файла

Закрой файл, когда закончишь использовать его, обычно закрытие с defer‘ом делается сразу после открытия.

Рекомендуем изучить следующие материалы по теме: