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

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

}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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