# Dateipfad: einen Ordner "hoch"



## MOEP_BIBER (30. Mai 2011)

Hey Leute,

wie kann man in Java im Filename angeben, dass die Datei einen Ordner weiter oben liegt?

Sowas wie "..\\img\\test.png"
also .. steht für einen Ordner weiter hoch.

Find leider nix mit Google.

MfG biber


----------



## Michael... (30. Mai 2011)

MOEP_BIBER hat gesagt.:


> wie kann man in Java im Filename angeben, dass die Datei einen Ordner weiter oben liegt?


In Vergleich zu? Einem anderen Verzeichnis? Dem Verzeichnis in dem das Programm liegt? ...

Beschreibe mal den Sachverhalt. Worum geht's konkret?


----------



## SlaterB (30. Mai 2011)

..\\ ist schon richtig, bzw. ../ verwenden,
schon ausprobiert, Probleme?


----------



## VfL_Freak (30. Mai 2011)

Moin,



MOEP_BIBER hat gesagt.:


> wie kann man in Java im Filename angeben, dass die Datei einen Ordner weiter oben liegt?
> Sowas wie "..\\img\\test.png"
> also .. steht für einen Ordner weiter hoch.



auch IMHO sollte das ok sein ....

Was genau klappt denn nicht? 
Wird die Datei nicht gefunden?

Du musst eventuell mal prüfen, welches Dein 'Startverzeichnis' (also quasi '.') ist. Vlt. läufst Du ja an der falschen Stelle los ...

Gruß
Klaus


----------



## MOEP_BIBER (30. Mai 2011)

Ich habs jetzt mit 
	
	
	
	





```
File myRootFile = new File(System.getProperty("user.dir"));
```
und dann mit getParent(); einen Ordner rauf gegangen.

Das mit dem .. hab ich jetz nich ausprobiert =)


----------



## MOEP_BIBER (30. Mai 2011)

Hab jetz doch noch ein Problem:
Dieser Code wirft ne NullpointerException.

```
try {
						URL url = getClass()
								.getResource("..\\sounds\\land.wav");
						URL url2 = getClass().getResource(".");
						System.out.println(url2.getPath());
						System.out.println(url.getPath());
						// AudioClip clip = Applet.newAudioClip(url);
						// clip.play();
					} catch (Exception e) {
						e.printStackTrace();
					}
```

mit dem url2 teste ich nur ob ich im richtigen Ordner bin.
Hat jemand ne Ahnung was ich falsch mach?

MfG Biber


----------



## SlaterB (30. Mai 2011)

vielleicht kann URL das einfach nicht, Umweg über File gehen und dort den Pfad bestimmen?

letztens gabs ein ähnliches Thema:
http://www.java-forum.org/java-basics-anfaenger-themen/118698-java-io-ioexception-failed-open.html


----------



## Gastredner (30. Mai 2011)

Liegt deine Resource im Classpath oder einfach nur im Filesystem? In letzterem Falle kannst du über getResource nicht darauf zugreifen und musst dir deine URL über ein File-Objekt besorgen. Sollte der Ordner sounds mitsamt Inhalt im Classpath bzw. im Jar liegen, so musst du von der Wurzel ausgehen, nicht vom Ort bzw. dem Package deiner Klasse (sprich: sounds/land.wav).


----------



## MOEP_BIBER (30. Mai 2011)

Hey Leute,
mit

```
try {
					File file = new File(getRoot() + "\\sounds\\land.wav");
					AudioClip clip = Applet.newAudioClip(file.toURL());
					clip.play();
				} catch (Exception e) {
					e.printStackTrace();
				}
```

hats geklappt.
Aber wieso is die Methode toURL() deprecated?
Was gibts denn für ne Ersatz-Methode?

edit:
so sollte man es anscheinend machen:

```
File file = new File(getRoot() + "\\sounds\\land.wav");
					URI uri = new URI(file.getPath());
					AudioClip clip = Applet.newAudioClip(uri.toURL());
					clip.play();
```


----------



## Gast2 (30. Mai 2011)

steht in der API.

```
toURL()
```
 escaped keine illegalen Zeichen in dem Pfad. Man sollte stattdessen 
	
	
	
	





```
toURI()
```
 verwenden.

EDIT:


> so sollte man es anscheinend machen:


Nein, um die URI zu erhalten kannst du einfach die entsprechende Methode aufrufen. Den weg über File#getPath() musst du nicht nehmen.


----------



## MOEP_BIBER (30. Mai 2011)

Ach die Methode hab ich übersehen^^
So gehts natürlich schöner ;D


----------



## mvitz (30. Mai 2011)

Und bitte nutzt doch unter Java einen / anstelle von dem blöden Windows \ ... das macht viele Programme gleich direkt Plattformunabhängig.


----------

