Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

String nach Windows / Unix-Normen aufsplitten

Empfohlene Antworten

Veröffentlicht

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

Warum willst Du das machen? Bekommst Du den Pfad auf eine bestimmte Weise? Auf welche? Ansonsten kann Java betriebssystemunabhängig mit dem "/" als Verzeichnistrenner immer arbeiten.

Peter

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

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

}

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


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

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

}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.