webentwicklung-frage-antwort-db.com.de

Schrägstrich oder Backslash?

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?

13
Patriot524

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.

23
Paul Draper

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.separatorsystem 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 .

15
T.J. Crowder

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);

    }
}  
3
Little Child

Du solltest benutzen / 

Zum Beispiel C:/Benutzer/...

0
Ryan