Wydaje się, że istnieją trzy identyczne sposoby uzyskania niezależnego od platformy „separatora plików” zależnego od platformy:
Jak decydujemy, kiedy którego użyć?
Czy jest między nimi jakaś różnica?
java
platform-independent
Pacerier
źródło
źródło
Odpowiedzi:
System.getProperties()
można przesłonić wywołaniami doSystem.setProperty(String key, String value)
lub parametrami wiersza poleceń-Dfile.separator=/
File.separator
pobiera separator dla domyślnego systemu plików.FileSystems.getDefault()
dostaje domyślny system plików.FileSystem.getSeparator()
pobiera znak separatora dla systemu plików. Zwróć uwagę, że jako metody instancji możesz użyć tej metody do przekazywania różnych systemów plików do swojego kodu innych niż domyślny, w przypadkach, gdy kod ma działać na wielu systemach plików w jednej JVM.źródło
FileSystem
instancję dla każdego systemu plików, z którym miałeś do czynienia.Jeśli twój kod nie przekracza granic systemu plików, tj. Pracujesz tylko z jednym systemem plików, użyj
java.io.File.separator
.To, jak wyjaśniono, da ci domyślny separator dla twojego FS. Jak wyjaśnił Bringer128,
System.getProperty("file.separator")
można go przesłonić opcjami wiersza poleceń i nie jest tak bezpieczny dla typu jakjava.io.File.separator
.Ostatni z nich
java.nio.file.FileSystems.getDefault().getSeparator();
został wprowadzony w Javie 7, więc równie dobrze możesz go na razie zignorować, jeśli chcesz, aby Twój kod był przenośny w starszych wersjach Java.Tak więc każda z tych opcji jest prawie taka sama jak inne, ale nie do końca. Wybierz taki, który odpowiada Twoim potrzebom.
źródło
java.io
przestarzałe na korzyśćjava.nio
?java.io
jest nieco niższy niżjava.nio
, ale nadal bardzo i szeroko przydatny. Możesz zobaczyć różnice tutaj: blogs.oracle.com/slc/entry/javanio_vs_javaio .nio
nie zastępujeio
, rozciąga ją na wiele sposobów (i wykorzystujeio
pod maską).