Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Функции для работы с каталогами
Для работы с каталогами используются следующие функции из пакета os
:
Getwd()
— позволяет получить строковое представление текущего рабочего каталога. Формат функции:
os.Getwd() (dir string, err error)
Пример:
fmt.Println(os.Getwd()) // C:\book\test <nil>
Chdir()
— позволяет изменить текущий рабочий каталог. Формат функции:
os.Chdir(dir string) error
Пример:
fmt.Println(os.Getwd()) // C:\book\test <nil>
fmt.Println(os.Chdir(`C:\book`)) // <nil>
fmt.Println(os.Getwd()) // C:\book <nil>
TempDir()
— возвращает путь к каталогу для временных файлов. Формат функции:
os.TempDir() string
Пример:
fmt.Println(os.TempDir()) // C:\Users\Unicross\AppData\Local\Temp
Mkdir()
— создает каталог с именемname
и правами доступаperm
. Функция возвращает объект ошибки или значениеnil
, если операция выполнена успешно. Формат функции:
os.Mkdir(name string, perm fs.FileMode) error
Пример:
err := os.Mkdir(`C:\book\f1\`, 0o750)
if err != nil {
if errors.Is(err, fs.ErrExist) {
fmt.Println("Каталог уже существует")
} else {
fmt.Println(err)
}
return
}
fmt.Println("Операция выполнена успешно")
MkdirAll()
— создает все каталоги в путиpath
с правами доступаperm
. Функция возвращает объект ошибки или значениеnil
, если операция выполнена успешно. Формат функции:
os.MkdirAll(path string, perm fs.FileMode) error
Пример:
err := os.MkdirAll(`C:\book\f2\f3\`, 0o750)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
MkdirTemp()
— создает временный каталог с уникальным именем в каталогеdir
. Название формируется путем добавления случайного значения кpattern
. Функция возвращает два значения. Через первое значение доступен путь к созданному каталогу. Через второе значение доступен объект ошибки или значениеnil
, если операция выполнена успешно. Формат функции:
os.MkdirTemp(dir string, pattern string) (string, error)
Созданный временный каталог автоматически не удаляется. Его нужно удалять вручную с помощью функции RemoveAll()
. Пример:
dir, err := os.MkdirTemp(`C:\book\`, `tmp_`)
if err != nil {
fmt.Println(err)
return
}
defer os.RemoveAll(dir)
fmt.Println("dir =", dir) // dir = C:\book\tmp_2531577710
Если внутри pattern
есть символ *
, то вместо него будет вставлено уникальное значение. Если каталог нужно создать в каталоге для временных файлов, то в первом параметре следует передать пустую строку. В этом случае будет использоваться значение, возвращаемое функцией TempDir()
. Пример:
dir, err := os.MkdirTemp(``, `*_tmp`)
if err != nil {
fmt.Println(err)
return
}
defer os.RemoveAll(dir)
fmt.Println("dir =", dir)
// dir = C:\Users\Unicross\AppData\Local\Temp\3693809501_tmp
Rename()
— переименовывает и/или перемещает каталог. В первом параметре указывается старое название каталога, а во втором параметре — новое название. Если операция успешно произведена, то функция возвращает значениеnil
. В противном случае функция возвращает объект ошибки. Формат функции:
os.Rename(oldpath string, newpath string) error
Пример:
fmt.Println(os.Rename(`C:\book\f1\`, `C:\book\f3\`)) // <nil>
Remove()
— удаляет каталог, название которого передано в параметре. Если операция успешно произведена, то функция возвращает значениеnil
. В противном случае функция возвращает объект ошибки. Обратите внимание: можно удалить только пустой каталог. Формат функции:
os.Remove(name string) error
Пример удаления пустого каталога:
fmt.Println(os.Remove(`C:\book\f3\`)) // <nil>
RemoveAll()
— удаляет каталог и все дочерние элементы. Если операция успешно произведена или путь не существует, то функция возвращает значениеnil
. В противном случае функция возвращает объект ошибки. Формат функции:
os.RemoveAll(path string) error
Пример удаления каталога со всем содержимым:
fmt.Println(os.RemoveAll(`C:\book\f2\`)) // <nil>