tinella Geschrieben 2. Februar 2006 Geschrieben 2. Februar 2006 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 Zitieren
kingofbrain Geschrieben 2. Februar 2006 Geschrieben 2. Februar 2006 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 Zitieren
HuDeanY Geschrieben 2. Februar 2006 Geschrieben 2. Februar 2006 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!!! Zitieren
perdian Geschrieben 3. Februar 2006 Geschrieben 3. Februar 2006 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(); } Zitieren
tinella Geschrieben 3. Februar 2006 Autor Geschrieben 3. Februar 2006 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 Zitieren
geloescht_Newlukai Geschrieben 5. Februar 2006 Geschrieben 5. Februar 2006 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(). Zitieren
perdian Geschrieben 6. Februar 2006 Geschrieben 6. Februar 2006 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(); } Zitieren
Empfohlene Beiträge
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.