Функция os.RemoveAll

Функция os.RemoveAll удаляет переданную директорию и все её содержимое рекурсивно. В первый параметр функция принимает путь к директории, которую нужно удалить. Функция возвращает ошибку типа error, если удаление не удалось.

Синтаксис

goos.RemoveAll(path)

Пример

Давайте создадим временную директорию с вложенными файлами и удалим её с помощью os.RemoveAll:

gopackage 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")
  }
}

Результат выполнения кода:

go"/tmp/example deleted successfully"

Пример

Давайте попробуем удалить несуществующую директорию с помощью os.RemoveAll:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  // Пытаемся удалить несуществующую директорию
  err := os.RemoveAll("/non/existent/path")
  if err != nil {
    fmt.Println("Error:", err)
  } else {
    fmt.Println("Directory deleted")
  }
}

Результат выполнения кода:

go"Error: remove /non/existent/path: no such file or directory"

Пример

Давайте создадим структуру из нескольких вложенных директорий с файлами и удалим их рекурсивно:

gopackage 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")
  }
}

Результат выполнения кода:

go"/tmp/root and all contents removed"

Смотрите также

  • функцию os.Remove,
    которая удаляет один файл или пустую директорию
  • функцию os.MkdirAll,
    которая создает вложенные директории рекурсивно
  • функцию os.Stat,
    которая возвращает информацию о файле или директории
  • функцию os.Rename,
    которая переименовывает или перемещает файл или директорию