Подтвердить что ты не робот

Как создать межплатформенные пути файлов в Go?

Я хочу открыть заданный файл "directory/subdirectory/file.txt" в golang. Каков рекомендуемый способ выражения такого пути в агностическом режиме ОС (например, обратные косые черты в Windows, пересылки в Mac и Linux)? Что-то вроде Python os.path module?

4b9b3361

Ответ 1

Для создания и управления специфичными для ОС путями используйте os.PathSeparator и path/filepath.

Альтернативный метод - всегда использовать '/' и path пакет в вашей программе. Пакет path использует '/' как разделитель путей независимо от ОС. Перед открытием или созданием файла конвертируйте/-сепаратированный путь в строку пути к конкретной ОС, вызывая filepath.FromSlash(path string). Пути, возвращаемые ОС, могут быть преобразованы в/-сепарализованные пути, вызвав filepath.ToSlash(path string).

Ответ 2

Используйте path/filepath вместо path, path предназначен только для прямых путей, разделенных косой чертой (например, те, которые используются в URL-адресах), а path/filepath управляет путями в разных операционных системах.

Ответ 3

На основе ответа @EvanShaw и этого блога был создан следующий код:

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    p := filepath.FromSlash("path/to/file")
    fmt.Println("Path: " + p)
}

возвращает:

Path: path\to\file

на винде.

Ответ 4

Go рассматривает косые черты() как универсальный разделитель для всех платформ [1]. "directory/subdirectory/file.txt" будет открыт правильно независимо от операционной системы времени выполнения.