# Filepath splitten



## M4x0r (23. Jul 2009)

Hi,
ich versuche grad sowas wie einen kleinen explorer zusammenzubauen.
Um eine "Zurück"-Funktion einzubauen, habe ich mir gedacht ich zerlege den Pfad zum aktuellen Ordner mit split("\\") und füge in wieder zusammen und lasse einfach das letzte element weg.
Zum test hab ich jetzt nur mal ausprobiert den Pfad zu splitten und die Tokens einzeln auszugeben


```
public void actionPerformed (ActionEvent e){
		[...]
		else if (e.getSource().equals(back)){
			String [] tokens = directory.split("\\");
			for (int i = 0 ; i <tokens.length ; i++)
				System.out.println(tokens[i]);
		}
	}
```

mit folgendem Ergebnis:


```
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
	at java.util.regex.Pattern.error(Pattern.java:1713)
	at java.util.regex.Pattern.compile(Pattern.java:1466)
	at java.util.regex.Pattern.<init>(Pattern.java:1133)
	at java.util.regex.Pattern.compile(Pattern.java:823)
	at java.lang.String.split(String.java:2293)
	at java.lang.String.split(String.java:2335)
	at Main.actionPerformed(Main.java:135)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6134)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5899)
	at java.awt.Container.processEvent(Container.java:2023)
	at java.awt.Component.dispatchEventImpl(Component.java:4501)
	at java.awt.Container.dispatchEventImpl(Container.java:2081)
	at java.awt.Component.dispatchEvent(Component.java:4331)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
	at java.awt.Container.dispatchEventImpl(Container.java:2067)
	at java.awt.Window.dispatchEventImpl(Window.java:2458)
	at java.awt.Component.dispatchEvent(Component.java:4331)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
```

Wie man schon sieht liegt es wahrscheinlich an dem "\\" . 
Wie muss ich das machen? :noe:
Danke.


----------



## faetzminator (23. Jul 2009)

Du willst in Regex ein \
1. \ ist in Regex ein Sonderzeichen und muss mit \ escaped werden: \\
2. \ ist in Java Strings ebenfalls eins und muss mit \ escaped werden: \\\\

Edit:
Bezogen auf habi55's Post würde ich 
	
	
	
	





```
[/\\\\]
```
 empfehlen.


----------



## mvitz (23. Jul 2009)

```
"\\\\"
```

\ ist für RegExp ein Steuerzeichen, muss also mit \ escaped werden --> \\
\ ist für Java aber auch ein Steuerzeichen also ergibt \\ -> \
Das wiederrum führt uns zu \\\\ + Java = \\ + RegExp = \

Zu beachten ist dann aber wieder, dass unter Linux der / das Trennezciehn für Ordner ist!


----------



## M4x0r (23. Jul 2009)

ah! 
danke :toll:


----------



## mvitz (23. Jul 2009)

Oder auch: File (Java 2 Platform SE v1.4.2) du kannst auch, wenn du deinen Explorer mit File-Objekten aufbaust evtl. File (Java 2 Platform SE v1.4.2) benutzen


----------

