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
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)
.
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.
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.
Debe estar marcado como la respuesta correcta, bastante fácil de entender, solo use filepath en todas partes y ... ¡obtenga beneficios! – QtRoS
- 1. ¿Cómo creo un string de mapa [[16]] [] en Go?
- 2. OpenAL para CrossPlatform Development
- 3. Cómo manejar ~ en las rutas de archivos
- 4. ¿Es .git folder crossplatform?
- 5. Formateo de rutas de archivos
- 6. Codificación de rutas de archivos
- 7. rutas relativas de archivos en Perl
- 8. Manejando rutas de archivos multiplataforma
- 9. En Go, ¿cómo creo un "constructor" para un tipo con un tipo base de cadena?
- 10. Cargar metadatos de archivos con go
- 11. ¿Cómo compilar el programa Go que consta de varios archivos?
- 12. Crossplatform threading y GTK #, no funciona (correctamente)?
- 13. ¿Cómo funcionan las rutas relativas de archivos en Eclipse?
- 14. ¿Cómo manejar i18n en Go?
- 15. Cómo creo archivos de acceso directo de Visual Studio
- 16. Rutas ASP.NET MVC con "Extensiones de archivos"
- 17. Obtener rutas absolutas de todos los archivos en un directorio
- 18. ¿Cómo regreso de func main en Go?
- 19. ¿Cómo puedo comprimir archivos en Java y no incluir archivos de las rutas
- 20. Trabajando con rutas de archivos relativas en .Net
- 21. Ejemplos de plantillas Go
- 22. Uso de rutas relativas para registrar archivos en Pylon's development.ini
- 23. Búsqueda de archivos en rutas de entorno variable "Ruta"
- 24. Vim rutas de archivos en la ventana de quickfix
- 25. Hacer manipulaciones de rutas de archivos en XSLT
- 26. Expresión regular para validar rutas de archivos basadas en Windows, incluidas las rutas UNC
- 27. Conversión de rutas relativas a rutas absolutas
- 28. Cómo utilizar rutas relativas para los archivos incluidos como Css
- 29. Go, go get, go install, paquetes locales y control de versión
- 30. Práctica recomendada para compilar rutas de archivos en C#
¿Lo intentó en Windows? –
@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
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 –