Функция os.RemoveAll
Функция os.RemoveAll удаляет переданную директорию и все её содержимое рекурсивно.
В первый параметр функция принимает путь к директории, которую нужно удалить.
Функция возвращает ошибку типа error, если удаление не удалось.
Синтаксис
os.RemoveAll(path)
Пример
Давайте создадим временную директорию с вложенными файлами и удалим её с помощью os.RemoveAll:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Создаем временную директорию
tempDir := filepath.Join(os.TempDir(), "example")
os.MkdirAll(tempDir, 0755)
// Создаем вложенный файл
filePath := filepath.Join(tempDir, "test.txt")
os.WriteFile(filePath, []byte("hello"), 0644)
// Удаляем директорию и всё её содержимое
err := os.RemoveAll(tempDir)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(tempDir + " deleted successfully")
}
}
Результат выполнения кода:
"/tmp/example deleted successfully"
Пример
Давайте попробуем удалить несуществующую директорию с помощью os.RemoveAll:
package main
import (
"fmt"
"os"
)
func main() {
// Пытаемся удалить несуществующую директорию
err := os.RemoveAll("/non/existent/path")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Directory deleted")
}
}
Результат выполнения кода:
"Error: remove /non/existent/path: no such file or directory"
Пример
Давайте создадим структуру из нескольких вложенных директорий с файлами и удалим их рекурсивно:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Создаем сложную структуру директорий
rootDir := filepath.Join(os.TempDir(), "root")
subDir := filepath.Join(rootDir, "sub", "subsub")
os.MkdirAll(subDir, 0755)
// Создаем несколько файлов
os.WriteFile(filepath.Join(rootDir, "file1.txt"), []byte("content1"), 0644)
os.WriteFile(filepath.Join(rootDir, "sub", "file2.txt"), []byte("content2"), 0644)
os.WriteFile(filepath.Join(subDir, "file3.txt"), []byte("content3"), 0644)
// Рекурсивно удаляем всё
err := os.RemoveAll(rootDir)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(rootDir + " and all contents removed")
}
}
Результат выполнения кода:
"/tmp/root and all contents removed"
Смотрите также
-
функцию
os.Remove,
которая удаляет один файл или пустую директорию -
функцию
os.MkdirAll,
которая создает вложенные директории рекурсивно -
функцию
os.Stat,
которая возвращает информацию о файле или директории -
функцию
os.Rename,
которая переименовывает или перемещает файл или директорию