Chcę otworzyć dany plik "directory/subdirectory/file.txt"
w języku golang. Jaki jest zalecany sposób wyrażenia takiej ścieżki w sposób niezależny od systemu operacyjnego (np. Ukośniki w systemie Windows, ukośniki w systemie Mac i Linux)? Coś jak moduł Pythona os.path
?Jak utworzyć ścieżki do plików krzyżowych w programie Go?
Odpowiedz
Do tworzenia ścieżek specyficznych dla systemu operacyjnego i manipulowania nimi należy użyć bezpośrednio pakietu os.PathSeparator
i path/filepath
.
Alternatywną metodą jest zawsze używanie pakietu '/'
i path
w całym programie. Pakiet path
używa '/'
jako separatora ścieżek niezależnie od systemu operacyjnego. Przed otwarciem lub utworzeniem pliku przekonwertuj ścieżkę/-separowany na specyficzny dla systemu operacyjnego ciąg znaków, wywołując filepath.FromSlash(path string)
. Ścieżki zwracane przez system operacyjny można konwertować na/-oddzielone ścieżki, wywołując filepath.ToSlash(path string)
.
Go ma pakiet path
do łączenia i dzielenia ścieżek plików, ale nie trzeba go używać. Go traktuje ukośniki jako uniwersalny separator. "directory/subdirectory/file.txt"
zostanie poprawnie otwarty bez względu na system operacyjny.
Użyj path/filepath
zamiast path
. path
jest przeznaczony tylko dla ścieżek oddzielonych ukośnikami (takich jak używane w adresach URL), a path/filepath
manipuluje ścieżkami w różnych systemach operacyjnych.
Należy oznaczyć jako prawidłowa odpowiedź, co jest łatwiejsze do zrozumienia - po prostu użyj ścieżki do plików wszędzie i ... zysku! – QtRoS
Czy próbowałeś tego w systemie Windows? –
@Atom Nie posiadam komputera z systemem Windows. [Russ Cox mówi, że traktuje "/" jako separator ścieżek na wszystkich platformach] (http://groups.google.com/group/golang-nuts/browse_thread/thread/5527660c2d860ca3), co wydaje mi się wystarczająco dobre. – Jjed
Russ napisał ten komentarz w dniu 2010-01-09. Od tego czasu zaszły pewne zmiany w sposobie zarządzania ścieżkami: zobacz http://golang.org/doc/devel/weekly.html#2011-03-07 –