Функция os.Chdir

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

Синтаксис

goos.Chdir(dir)

Пример

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

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  // Получаем текущую директорию
  oldDir, _ := os.Getwd()
  fmt.Println("Old dir:", oldDir)

  // Меняем директорию
  err := os.Chdir("data")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  // Проверяем новую директорию
  newDir, _ := os.Getwd()
  fmt.Println("New dir:", newDir)
}

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

go"Old dir: /home/user/project"
"New dir: /home/user/project/data"

Пример

Давайте попробуем изменить директорию на несуществующий путь и обработаем ошибку:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  // Пытаемся перейти в несуществующую директорию
  err := os.Chdir("nonexistent")
  if err != nil {
    fmt.Println("Error:", err)
  }
}

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

go"Error: chdir nonexistent: no such file or directory"

Пример

Давайте сохраним текущую директорию перед изменением, выполним работу в другой директории и вернемся обратно:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  // Сохраняем текущую директорию
  originalDir, _ := os.Getwd()
  fmt.Println("Original dir:", originalDir)

  // Переходим в новую директорию
  err := os.Chdir("data")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  // Выполняем работу в новой директории
  currentDir, _ := os.Getwd()
  fmt.Println("Working in:", currentDir)

  // Возвращаемся обратно
  err = os.Chdir(originalDir)
  if err != nil {
    fmt.Println("Error returning:", err)
    return
  }

  backDir, _ := os.Getwd()
  fmt.Println("Back to:", backDir)
}

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

go"Original dir: /home/user/project"
"Working in: /home/user/project/data"
"Back to: /home/user/project"

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

  • функцию os.Getwd,
    которая возвращает текущую рабочую директорию
  • функцию os.Mkdir,
    которая создает новую директорию
  • функцию os.MkdirAll,
    которая создает директорию со всеми промежуточными поддиректориями
  • функцию filepath.Abs,
    которая возвращает абсолютный путь к файлу или директории