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.
FileSystemun'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.iodeprecato 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 . nionon sostituisce io, lo estende in più modi (e utilizza iosotto il cofano).