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
- 1. Konwersja ścieżki URI do względnej ścieżki systemu plików w .NET
- 2. Jak wdrożyć wzór strategii w programie Go?
- 3. Rekordy aliasu kont krzyżowych
- 4. Jak dodać przykłady do dokumentacji interfejsu API w programie Go?
- 5. Czy nienazwane argumenty są w programie Go?
- 6. Dodawanie plików JAR do ścieżki klasy IntellijIdea
- 7. Jak utworzyć wykres logu w programie Matlab
- 8. Jak uzyskać wszystkie ścieżki do plików w katalogu Dokumenty?
- 9. Zmienne kontrolerów krzyżowych w Phalcon
- 10. C++ jak utworzyć katalog ze ścieżki
- 11. Średnia grupa filtrów krzyżowych
- 12. Ścieżki do plików w Pythonie w postaci błędów ciągu znaków
- 13. params.merge i wykonywanie skryptów krzyżowych
- 14. Jak utworzyć macierz komórek z podobnych obiektów w programie Matlab?
- 15. Jak utworzyć losową liczbę po logormalnej dystrybucji w programie excel?
- 16. Debugowanie plików zrzutu w programie Visual Studio
- 17. Jak poprawnie wywołać JSON-RPC w programie Go?
- 18. Jak mogę wdrożyć porównywalny interfejs w programie Go?
- 19. Jak mogę przekonwertować int64 na tablicę bajtów w programie go?
- 20. Jak dostosować wyjście kodowania JSON w programie Go?
- 21. Jak utworzyć wyzwalacz przed usunięciem w programie SQL Server?
- 22. importowanie plików GO w tym samym folderze
- 23. Używanie wielu plików .cpp w programie C++?
- 24. Jak utworzyć kolejkę wiadomości związanych z pamięcią w programie Erlang?
- 25. Jak utworzyć wartość pola Autonumerowanie w programie Access?
- 26. Jak znaleźć otwarte globalne uchwyty plików w programie perla
- 27. Streamreader do względnej ścieżki
- 28. Potrzebuję ścieżki do poszczególnych plików za pomocą os.walk()
- 29. Django - jak utworzyć plik i zapisać go w FileField modelu?
- 30. Struktura danych do wyszukiwania nazw plików i uzyskania ścieżki
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 –