„... identyfikator URI zaczyna się od file: ///, ale adres URL zawiera plik: / ...” Czy tak jest w przypadku systemów Windows i Linux?
ptntialunrlsd
@ptntialunrlsd To dobre pytanie. Nie sprawdzałem, ale myślę, że tak.
Aleksandr Dubinsky
7
Nie. Adres URL to tylko specjalny przypadek identyfikatora URI. Identyfikator URI pliku zaczyna się od „file: //”, a następnie zawiera nazwę hosta (zwykle pomijany), po którym następuje „/” i ścieżka „foo / bar” (ogólnie rozumiana jako ścieżka bezwzględna). Stąd „file: /// foo / var”. Identyfikator URI, który wygląda jak „plik: / foo / bar” jest nieprawidłowy. Zobacz także: schemat URI pliku
David Tonhofer
@DavidTonhofer Dziękuję za wyjaśnienie identyfikatorów URI, ale to nie odpowiada na pytanie ptntialunrlsd . Co „... toURL (). ToString ()” produkuje w systemie Linux? Poza tym cofnęłam Twoje zmiany, ponieważ uczyniły moją odpowiedź bardziej rozwlekłą bez zmiany znaczenia.
Aleksandr Dubinsky,
3
@AleksandrDubinsky Najlepiej jednak pozostawić wskaźniki do Oracle javadoc w… łatwiej jest kliknąć java.nio.file.Paths. Upewnij się również, że masz na myśli implementacje w „URI a URL”. Anway java.net.URL.toString()produkuje to samo na Uniksie, jak musi. Wyświetla tylko jeden znak „/”, który jest bardzo zły (patrz schemat URI pliku ). Myślę, że to jest w Javie z powodów, lepszego wykorzystania java.net.URI. Prawidłowo generuje „file: // [host] /” w wywołaniu .toString().
gdzie /your/file/herejest bezwzględną ścieżką do pliku w systemie Unix / Linux. Myślę, że w systemie Windows byłoby inaczej.
Robin Green
5
Nie jest to zbyt sprytne, ponieważ sam musisz poradzić sobie z ucieczką znaków, które nie są dozwolone w adresach URL. W systemie Windows (i potencjalnie w innych systemach operacyjnych) należy również zmodyfikować separator ścieżki z natywnej ścieżki do pliku.
jarnbjo
new URL("file:my.properties");
weberjn
Chociaż jest to poprawne, nie jest przenośne, ponieważ zależy od ścieżek bezwzględnych.
spójrz tutaj na pełną składnię: http://en.wikipedia.org/wiki/File_URI_scheme
dla systemów typu unix będzie tak, jak powiedział @Alex, file:///your/file/herepodczas gdy dla systemów Windowsfile:///c|/path/to/file
Nie rób tego ręcznie. File.toURI().toURL()jest droga
Sean Patrick Floyd
3
@SeanPatrickFloyd czasami nie masz wyboru, na przykład gdy jest w .propertiespliku.
Sanki
@ArtB Nie wiem, jak to robi różnicę
Sean Patrick Floyd
2
@SeanPatrickFloyd, to pytanie / odpowiedź pojawia się podczas wyszukiwania java file url, co w moim przypadku oznacza, że szukałem formatu file://adresu URL, w Javie, do wykorzystania w .propertiespliku lub do
wpisania
1
@SeanPatrickFloyd czasami nie masz dostępu do kodu źródłowego, tylko do właściwości i file://jest to niestety konieczne. Bycie zależnym od systemu nie jest tak dużym problemem, ponieważ jest to zmienna właściwość.
Korzystanie z języka Java 7:
Jednak prawdopodobnie chcesz uzyskać
URI
. Np. AURI
zaczyna się od,file:///
ale adres URL odfile:/
(przynajmniej totoString
tworzy).źródło
java.nio.file.Paths
. Upewnij się również, że masz na myśli implementacje w „URI a URL”. Anwayjava.net.URL.toString()
produkuje to samo na Uniksie, jak musi. Wyświetla tylko jeden znak „/”, który jest bardzo zły (patrz schemat URI pliku ). Myślę, że to jest w Javie z powodów, lepszego wykorzystaniajava.net.URI
. Prawidłowo generuje „file: // [host] /” w wywołaniu.toString()
.źródło
źródło
/your/file/here
jest bezwzględną ścieżką do pliku w systemie Unix / Linux. Myślę, że w systemie Windows byłoby inaczej.new URL("file:my.properties");
źródło
spójrz tutaj na pełną składnię: http://en.wikipedia.org/wiki/File_URI_scheme dla systemów typu unix będzie tak, jak powiedział @Alex,
file:///your/file/here
podczas gdy dla systemów Windowsfile:///c|/path/to/file
źródło
File.toURI().toURL()
jest droga.properties
pliku.java file url
, co w moim przypadku oznacza, że szukałem formatufile://
adresu URL, w Javie, do wykorzystania w.properties
pliku lub dofile://
jest to niestety konieczne. Bycie zależnym od systemu nie jest tak dużym problemem, ponieważ jest to zmienna właściwość.Możesz także użyć
źródło
jar:file:/home/user/a/b/c/foo.jar!/com/example/stuff/config.txt
.