2012-02-21 12 views
31

Voglio aprire un file dato "directory/subdirectory/file.txt" in golang. Qual è il modo consigliato per esprimere un tale percorso in modo agnostico sul sistema operativo (ad es. Backslash in Windows, barre rovesciate in Mac e Linux)? Qualcosa come il modulo os.path di Python?Come si creano percorsi di file crossplatform in Go?

risposta

32

Per creare e modificare i percorsi specifici del sistema operativo utilizzare direttamente os.PathSeparator e il pacchetto path/filepath.

Un metodo alternativo è quello di utilizzare sempre '/' e il pacchetto path in tutto il programma. Il pacchetto path utilizza '/' come separatore di percorso indipendentemente dal sistema operativo. Prima di aprire o creare un file, convertire il percorso/-separato in una stringa di percorso specifica del sistema operativo chiamando filepath.FromSlash(path string). I percorsi restituiti dal sistema operativo possono essere convertiti in/percorsi separati chiamando lo filepath.ToSlash(path string).

0

Go dispone del pacchetto path per l'unione e la suddivisione dei percorsi dei file, ma non è necessario utilizzarlo. Vai considera le barre in avanti come separatore universale. "directory/subdirectory/file.txt" verrà aperto correttamente indipendentemente dal sistema operativo runtime.

+1

Hai provato su Windows? –

+0

@Atom Non possiedo una macchina Windows. [Russ Cox dice Go tratta/"come separatore di percorso su tutte le piattaforme] (http://groups.google.com/group/golang-nuts/browse_thread/thread/5527660c2d860ca3), che mi sembra abbastanza buono. – Jjed

+1

Russ ha rilasciato questo commento il 2010-01-09. Da allora sono state apportate alcune modifiche alla gestione dei percorsi: vedi http://golang.org/doc/devel/weekly.html#2011-03-07 –

13

Utilizzare path/filepath anziché path. path è destinato solo ai percorsi separati dalla barra (come quelli utilizzati negli URL), mentre path/filepath gestisce i percorsi tra diversi sistemi operativi.

+0

Deve essere contrassegnato come risposta giusta, molto più facile da capire - basta usare filepath ovunque e ... profitto! – QtRoS

Problemi correlati