Es scheint drei identische Möglichkeiten zu geben, um das plattformabhängige "Dateitrennzeichen" plattformunabhängig zu erhalten:
Wie entscheiden wir, wann wir welche verwenden?
Gibt es überhaupt einen Unterschied zwischen ihnen?
java
platform-independent
Pacerier
quelle
quelle
Antworten:
System.getProperties()
kann durch Aufrufe vonSystem.setProperty(String key, String value)
oder mit Befehlszeilenparametern überschrieben werden-Dfile.separator=/
File.separator
Ruft das Trennzeichen für das Standarddateisystem ab.FileSystems.getDefault()
Erhält das Standard-Dateisystem.FileSystem.getSeparator()
Ruft das Trennzeichen für das Dateisystem ab. Beachten Sie, dass Sie dies als Instanzmethode verwenden können, um andere Dateisysteme als die Standardmethode an Ihren Code zu übergeben, wenn Sie Ihren Code benötigen, um auf mehreren Dateisystemen in einer JVM zu arbeiten.quelle
FileSystem
für jedes Dateisystem, mit dem Sie sich befasst haben, eine andere Instanz.Wenn Ihr Code keine Dateisystemgrenzen überschreitet, dh Sie arbeiten nur mit einem Dateisystem, verwenden Sie
java.io.File.separator
.Dadurch erhalten Sie, wie erläutert, das Standardtrennzeichen für Ihren FS. Wie Bringer128 erklärt,
System.getProperty("file.separator")
kann über Befehlszeilenoptionen überschrieben werden und ist nicht so typsicher wiejava.io.File.separator
.Die letzte
java.nio.file.FileSystems.getDefault().getSeparator();
Version wurde in Java 7 eingeführt. Sie können sie daher vorerst ignorieren, wenn Sie möchten, dass Ihr Code auf ältere Java-Versionen portierbar ist.Jede dieser Optionen ist fast dieselbe wie die anderen, aber nicht ganz. Wählen Sie eine, die Ihren Anforderungen entspricht.
quelle
java.io
zugunsten von veraltetjava.nio
?java.io
ist ein bisschen niedriger alsjava.nio
, aber immer noch sehr und weithin nützlich. Sie können die Unterschiede hier sehen: blogs.oracle.com/slc/entry/javanio_vs_javaio .nio
ersetzt nichtio
, es erweitert es auf mehrere Arten (und verwendetio
unter der Haube).