Ich versuche Textdateien in ein anderes Verzeichnis zu schreiben bzw. aus einem anderen zu lesen als mein Programm. Sollte ich ein Verzeichnis angeben, aus dem geschrieben oder gelesen werden soll, sollte ich Schrägstriche oder umgekehrte Schrägstriche verwenden, um einen Dateipfad zu identifizieren?
Die Verwendung von Schrägstrichen macht das System unabhängig. Ich würde der Einfachheit halber dabei bleiben.
Verwenden Sie Java.io.File.separator
, wenn Sie den Pfad zum Benutzer anzeigen. Sie möchten diese Windows-Benutzer lieber nicht überraschen. Sie sind ziemlich nervös.
Ich habe es nie documented irgendwo gefunden, aber mit den JDK-Klassen können Sie Schrägstriche verwenden, unabhängig davon, ob Sie Windows verwenden oder nicht. (Sie können dies in der JDK-Quelle sehen, in der Pfadtrennzeichen für Sie explizit konvertiert werden.)
Offiziell - und in jeder Benutzeroberfläche, die Sie gerade ausführen - sollten Sie die file.separator
system property verwenden, die über System.getProperty
verfügbar ist (die Liste der Standard-Systemeigenschaften ist dokumentiert in den Dokumenten für System.getProperties
):
String sep = System.getProperty("file.separator");
... und auch über die Felder static
Sie sind auch als File.separator
(und File.separatorChar
) verfügbar.
Sie können auch die verschiedenen Funktionen der der Java.io.File
-Klasse verwenden, um Pfade zu kombinieren und aufzuteilen, und/oder die verschiedenen Funktionen der Schnittstellen und Klassen in Java.nio.file
.
Sie könnten beide verwenden.
Wenn Sie /
verwenden, benötigen Sie nur einen einzelnen Schrägstrich.
Wenn Sie \
verwenden, müssen Sie \\
verwenden. Das heißt, du musst dem entkommen.
Sie können auch die Methode resolve()
der Klasse Java.nio.Path
verwenden, um dem vorhandenen Pfad Verzeichnisse/Dateien hinzuzufügen. Das vermeidet die Mühe, vorwärts oder rückwärts Schrägstriche zu verwenden. Sie können den absoluten Pfad dann abrufen, indem Sie die toAbsolutePath()
-Methode gefolgt von toString()
aufrufen.
SSCCE:
import Java.nio.file.Path;
import Java.nio.file.Paths;
public class PathSeperator {
public static void main(String[] args) {
// the path seperator for this system
String pathSep = System.getProperty("path.separator");
// my home directory
Path homeDir = Paths.get(System.getProperty("user.home"));
// lets print them
System.out.println("Path Sep: " + pathSep);
System.out.println(homeDir.toAbsolutePath());
// as it turns out, on my linux it is a colon
// and Java is using forward slash internally
// lets add some more directories to the user.home
homeDir = homeDir.resolve("Eclipse").resolve("configuration");
System.out.println("Appending more directories using resolve()");
System.out.println(homeDir);
}
}
Du solltest benutzen /
Zum Beispiel C:/Benutzer/...