2012-02-21 7 views
31

Quiero abrir un archivo dado "directory/subdirectory/file.txt" en golang. ¿Cuál es la forma recomendada de expresar dicha ruta de una manera independiente del sistema operativo (es decir, barras invertidas en Windows, barras diagonales en Mac y Linux)? Algo así como el módulo os.path de Python?¿Cómo creo rutas de archivos crossplatform en Go?

Respuesta

32

Para crear y manipular rutas de acceso específicas del sistema operativo, utilice directamente os.PathSeparator y el paquete path/filepath.

Un método alternativo es usar siempre '/' y el paquete path en todo el programa. El paquete path utiliza '/' como separador de ruta, independientemente del sistema operativo. Antes de abrir o crear un archivo, convierta la ruta/-separated en una cadena de ruta específica del sistema operativo llamando al filepath.FromSlash(path string). Las rutas devueltas por el sistema operativo se pueden convertir en rutas de acceso separadas por llamada al filepath.ToSlash(path string).

0

Go tiene el paquete path para unir y dividir rutas de archivos, pero no necesita usarlo. Go trata barras diagonales como el separador universal. "directory/subdirectory/file.txt" se abrirá correctamente independientemente del sistema operativo en tiempo de ejecución.

+1

¿Lo intentó en Windows? –

+0

@Atom No tengo una máquina con Windows. [Russ Cox dice Go treats '/' como el separador de ruta en todas las plataformas] (http://groups.google.com/group/golang-nuts/browse_thread/thread/5527660c2d860ca3), lo cual me parece lo suficientemente bueno. – Jjed

+1

Russ hizo ese comentario en 2010-01-09. Desde entonces, se han producido algunos cambios en el tratamiento de rutas: consulte http://golang.org/doc/devel/weekly.html#2011-03-07 –

13

Utilice path/filepath en lugar de path. path está destinado únicamente a las rutas de acceso separadas por barras (como las que se utilizan en las direcciones URL), mientras que path/filepath manipula las rutas en los diferentes sistemas operativos.

+0

Debe estar marcado como la respuesta correcta, bastante fácil de entender, solo use filepath en todas partes y ... ¡obtenga beneficios! – QtRoS

Cuestiones relacionadas