Sembra che ci siano tre modi identici per ottenere il "separatore di file" dipendente dalla piattaforma in modo indipendente:
Come decidiamo quando usare quale?
C'è qualche differenza tra loro?
Sembra che ci siano tre modi identici per ottenere il "separatore di file" dipendente dalla piattaforma in modo indipendente:
Come decidiamo quando usare quale?
C'è qualche differenza tra loro?
Risposte:
System.getProperties()
può essere sovrascritto dalle chiamate verso System.setProperty(String key, String value)
o con i parametri della riga di comando-Dfile.separator=/
File.separator
ottiene il separatore per il filesystem predefinito.
FileSystems.getDefault()
ti fornisce il filesystem predefinito.
FileSystem.getSeparator()
ti dà il carattere separatore per il filesystem. Si noti che come metodo di istanza è possibile utilizzare questo per passare diversi file system al codice diverso da quello predefinito, nei casi in cui è necessario che il codice funzioni su più file system in una JVM.
FileSystem
un'istanza diversa per ogni file system che hai trattato.
Se il tuo codice non attraversa i confini del filesystem, cioè stai solo lavorando con un filesystem, allora usa java.io.File.separator
.
Questo, come spiegato, ti darà il separatore predefinito per il tuo FS. Come spiegato da Bringer128, System.getProperty("file.separator")
può essere sostituito tramite le opzioni della riga di comando e non è sicuro come il tipojava.io.File.separator
.
L'ultimo, è java.nio.file.FileSystems.getDefault().getSeparator();
stato introdotto in Java 7, quindi potresti anche ignorarlo per ora se vuoi che il tuo codice sia portatile su versioni Java precedenti.
Quindi, ognuna di queste opzioni è quasi uguale alle altre, ma non del tutto. Scegli quello più adatto alle tue esigenze.
java.io
deprecato a favore di java.nio
?
java.io
è un po 'più basso di java.nio
, ma comunque molto e ampiamente utile. Puoi vedere le differenze qui: blogs.oracle.com/slc/entry/javanio_vs_javaio . nio
non sostituisce io
, lo estende in più modi (e utilizza io
sotto il cofano).