Курс — «Программирование на Go для начинающих» — #10 Работа с данными. Работа с файлами и директориями.
Здравствуйте, дорогие друзья.
В программировании на Go Вам часто придется работать с файловой системой, будь то чтение данных из файла, запись в файл или управление файлами и директориями. Go предоставляет обширный набор инструментов в стандартной библиотеке, которые позволяют легко выполнять эти задачи.
Открытие и чтение файлов
Для открытия файла в Go используется функция Open
из пакета os
. После открытия файла вы можете использовать различные методы для чтения из файла.
1 2 3 4 5 6 7 8 9 10 11 12 |
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
с соответствующими флагами для открытия существующего файла с возможностью записи.
1 2 3 4 5 6 7 8 9 |
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 предоставляет функции для создания, удаления и перечисления содержимого директорий.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Создание директории 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
предоставляет функции для работы с путями файловой системы в портативном виде. Это включает в себя объединение путей, разделение пути на компоненты, получение абсолютного пути и многое другое.
1 2 3 4 5 6 7 |
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, эти задачи становятся простыми и интуитивно понятными, позволяя разработчикам сосредоточиться на решении более сложных проблем.
На этом все. Всем хорошего дня!
Цикл статей по курсу: «Язык программирования Go для начинающих».