Zum Inhalt springen

String nach Windows / Unix-Normen aufsplitten


Empfohlene Beiträge

Geschrieben

Hallo Leute

Ich möchte einen Pfad (String) nach \ sowie / aufsplitten, je nach dem ob das Programm in Unix oder Windows läuft.

Ich mache das für Window so:


String strSeparator = new String();

strSeparator = String.valueOf(File.separatorChar);
und dann so:

tempSave = pathToSeparate.split("\\" + strSeparator);
Das funktioniert! Für Unix mit dem Slash mache ich das eigentlich genau gleich, nämlich so:

tempSave = pathToSeparate.split("/" + strSeparator);
ABER: Es gibt mir folgende Fehlermeldung aus:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 2

/ \  ^

statt einfach nix zu separieren!

Weiss jemand was ich ändern muss, damit es funktioniert?

Wie kann ich diesen "Mechanismus" so nutzen, dass es das ganze automatisch je nach Betriebssystem selber merkt und die entsprechenden / oder \ einfügt? Muss ich das noch von Hand abfragen, bsp: wenn / vorhanden dann separier nach / , wenn \ vorhanden dann separier nach \ ?

Danke vielmals

Geschrieben

Hey phät krass guckst du:

In der Konstanten

File.separator

findest du genau was du sucht.

Dort liegt nämlich abhängig vom System auf dem Java läuft der Separator \ oder /.

Und nach dem splitest du dann eben auf.

Ecco va bene!!!

Geschrieben
Hey phät krass guckst du:
Hey, phät, krass, guckst du erstmal in das voll coole Originalposting rein. Er verwendet bereits echt heavy den File.separatorChar, der total crazy nichts anderes ist.

Weiss jemand was ich ändern muss, damit es funktioniert?
Am besten siehst du dir zuerst mal die genaue Fehlermeldung an, die du erhälst - da steckt nämlich eigentlich schon eine ganze Menge an Informationen drin, die dich der Problemlösung ein ganzes Stückchen weiterbringen:

PatternSyntaxException bedeutet, dass ein Fehler in deinem regulären Ausdruck vorhanden ist, mit dem du den Dateipfad zerpflücken willst. Das entstehende Pattern enthält bei deiner zweiten Methode "//" was nicht zur gewünschten Regex Evaluierung führt wie eben "/".

Generell: Lies dir mal ein Regex-Tutorial durch:

http://www.google.com/search?q=regex%20tutorial

Was ich viel einfacher finde: Wenn du eh eine Datei hast, was spricht dann gegen ein


File theFile = getPathFromSomewhere();

List<String> thePath = new ArrayList<String>();

while(theFile != null && !theFile.isRoot()) {

  thePath.add(theFile.add(theFile.getName(), 0));

  theFile = theFile.getParentFile();

}

Geschrieben

Hey Leute danke für eure Antworten!

Hab was dazu gefunden falls jemand das gleiche Problem hat:

System.out.println(Arrays.toString(path.split("\\\\|/")));

cu

Geschrieben

File theFile = getPathFromSomewhere();

List<String> thePath = new ArrayList<String>();

while(theFile != null && !theFile.isRoot()) {

  thePath.add(theFile.add(theFile.getName(), 0));

  theFile = theFile.getParentFile();

}

Sorry, aber irgendwie steh' ich auf dem Schlauch. Aber File hat weder eien Methode isRoot() noch eine Methode add().

Geschrieben
Sorry, aber irgendwie steh' ich auf dem Schlauch. Aber File hat weder eien Methode isRoot() noch eine Methode add().
Nachvollziehbar :) Das kommt davon, wenn man Beispiele wählt und viel schneller tippt als man denkt *g*. Hier nochmal ein Versuch:


File theFile             = getPathFromSomewhere();

Set<File> rootFiles      = new HashSet(Arrays.asList(File.listRoots()));

List<String> thePath     = new ArrayList<String>();

while(theFile != null && !rootFiles.contains(theFile)) {

  thePath.add(theFile.getName(), 0);

  theFile                = theFile.getParentFile();

}

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...