Найти тему

Курс - «Программирование на Go для начинающих» - #10 Работа с данными. Работа с файлами и директориями.

Оглавление

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

Открытие и чтение файлов

Для открытия файла в Go используется функция Open из пакета os. После открытия файла вы можете использовать различные методы для чтения из файла.

file, err := os.Open("example.txt")
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}

В этом примере файл example.txt открывается для чтения, а затем с его помощью создается сканер, который читает файл построчно.

Запись в файлы

Для записи в файл в Go можно использовать функцию Create для создания нового файла или OpenFile с соответствующими флагами для открытия существующего файла с возможностью записи.

file, err := os.Create("example.txt")
if err != nil {
log.Fatal(err)
}
defer
file.Close()
_, err = file.WriteString("Привет, мир!\n")
if err != nil {
log.Fatal(err)
}

Этот код создает файл example.txt и записывает в него строку "Привет, мир!".

Работа с директориями

Go предоставляет функции для создания, удаления и перечисления содержимого директорий.

// Создание директории
err := os.Mkdir("example_dir", 0755)
if err != nil {
log.Fatal(err)
}
// Перечисление содержимого директории
entries, err := os.ReadDir("example_dir")
if err != nil {
log.Fatal(err)
}
for _, entry := range entries {
fmt.Println(
entry.Name())
}
// Удаление директории
err = os.Remove("example_dir")
if err != nil {
log.Fatal(err)
}

В этом примере сначала создается директория example_dir, затем перечисляется ее содержимое, и, наконец, директория удаляется.

Работа с путями

Пакет path/filepath предоставляет функции для работы с путями файловой системы в портативном виде. Это включает в себя объединение путей, разделение пути на компоненты, получение абсолютного пути и многое другое.

path := filepath.Join("dir", "subdir", "file.txt")
fmt.Println(path) // Выведет "dir/subdir/file.txt" на Unix или "dir\subdir\file.txt" на Windows
absPath, err := filepath.Abs(path)
if err != nil {
log.Fatal(err)
}
fmt.Println(absPath) // Выведет абсолютный путь

Работа с файлами и директориями в Go — это мощный инструмент в арсенале разработчика. Благодаря стандартной библиотеке Go, эти задачи становятся простыми и интуитивно понятными, позволяя разработчикам сосредоточиться на решении более сложных проблем.