tinella Geschrieben 2. Februar 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 2. Februar 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HuDeanY Geschrieben 2. Februar 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 3. Februar 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tinella Geschrieben 3. Februar 2006 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 5. Februar 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 6. Februar 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.