In der File
Klasse gibt es zwei Zeichenfolgen separator
und pathSeparator
.
Was ist der Unterschied? Wann sollte ich eins über das andere verwenden?
In der File
Klasse gibt es zwei Zeichenfolgen separator
und pathSeparator
.
Was ist der Unterschied? Wann sollte ich eins über das andere verwenden?
Antworten:
Wenn du meinst File.separator
und File.pathSeparator
dann:
File.pathSeparator
wird verwendet, um einzelne Dateipfade in einer Liste von Dateipfaden zu trennen. Betrachten Sie unter Windows die Umgebungsvariable PATH. Sie verwenden a ;
, um die Dateipfade so zu trennen, wie es unter Windows File.pathSeparator
der Fall wäre ;
.
File.separator
wird entweder /
oder \
wird verwendet, um den Pfad zu einer bestimmten Datei aufzuteilen. Zum Beispiel unter Windows ist es \
oderC:\Documents\Test
File.separator
sollte in File.fileSeparator
Bezug aufFile.pathSeparator
File
. Ich denke, der Dateiteil ist impliziert. Aber wer weiß, warum sie viel von dem gemacht haben, was sie mit Java gemacht haben.
Sie verwenden ein Trennzeichen, wenn Sie einen Dateipfad erstellen. In Unix ist das Trennzeichen also /
. Wenn Sie also den Unix-Pfad erstellen /var/temp
möchten, gehen Sie folgendermaßen vor:
String path = File.separator + "var"+ File.separator + "temp"
Sie verwenden das, pathSeparator
wenn Sie mit einer Liste von Dateien wie in einem Klassenpfad arbeiten. Wenn Ihre App beispielsweise eine Liste von Gläsern als Argument verwendet hat, ist die Standardmethode zum Formatieren dieser Liste unter Unix:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Bei einer Liste von Dateien würden Sie also Folgendes tun:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
diesen File.separator
erstellen , ist die Verwendung nutzlos, da Sie bereits plattformabhängigen Code haben. Könnte auch den Pfad fest codieren.
java.io.File
Klasse enthält vier statische Trennvariablen. Zum besseren Verständnis lassen Sie uns mit Hilfe von Code verstehen
Beachten Sie, dass alle diese Variablen endgültig und systemabhängig sind.
Hier ist das Java-Programm zum Drucken dieser Trennvariablen. FileSeparator.java
import java.io.File;
public class FileSeparator {
public static void main(String[] args) {
System.out.println("File.separator = "+File.separator);
System.out.println("File.separatorChar = "+File.separatorChar);
System.out.println("File.pathSeparator = "+File.pathSeparator);
System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
}
}
Ausgabe des obigen Programms auf dem Unix-System:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Ausgabe des Programms auf dem Windows-System:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Um unsere Programmplattform unabhängig zu machen, sollten wir immer diese Trennzeichen verwenden, um einen Dateipfad zu erstellen oder Systemvariablen wie PATH, CLASSPATH zu lesen.
Hier ist das Code-Snippet, das zeigt, wie Trennzeichen richtig verwendet werden.
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
String
und, das char
von den oben genannten Methoden zurückgegeben wird, gibt den korrekt formatierten Backslash zurück (wenn unter Windows).