В программировании на 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, эти задачи становятся простыми и интуитивно понятными, позволяя разработчикам сосредоточиться на решении более сложных проблем.