# Pfadangaben unter Java



## DarkAngelfire (4. Jan 2006)

Hi Leute, ich bin beim Programmieren auf ein Problem gestoßen. Wenn ich eine Anwendung schreiben will und beispielsweise ein Bild einfügen möchte oder aber auch Dateien ereugen möchte zum abspeichern von Highscores oder sowas musste ich bisher immer sowas setzen:

```
new FileOutputStream( "C:\\jaryx.txt" ) ) );
```
 oder auch:

```
image = ImageIO.read(new FileInputStream("C:\\sun.jpg"));
```
Diese Art und Weise ist aber unpraktisch und verstößt gegen das mit der Plattformunabhängigkeit, denn unter Linux gibt es kein C:\\...
Außerdem müsste man nach dem erzeugen der ausführbaren Jar Datei zusätzlich immer noch alle Bilder mitliefern und dem Benutzer sagen das die Bilder nach C:\\ müssen und das kann ja auch nicht richtig sein.
Meine Frage nun, ob man das nich umgehen kann, indem man einen absoluten Pfad setzten kann, das die Bilder beispielsweise in die Jar Datei eingefügt werden und man aus dem Paket herraus die Bilder laden kann oder sowas. Ich hoffe es gibt da eine Plattformunabhänige Lösung...

Vielen Dank und viele Grüße

DarkAngelfire :toll:


----------



## Sanix (4. Jan 2006)

setze doch einfach relative Pfade?!


----------



## bygones (4. Jan 2006)

du kannst natürlich auch die dateien ins jar einfügen... 

das gabs hier schon öfters - suche mal zum Thema getRessource, Bild in jar usw....


----------



## DarkAngelfire (4. Jan 2006)

So ich hab das nun wie folgt gemacht:

```
String pfad = System.getProperty("user.dir");
image = ImageIO.read(new FileInputStream(pfad+"\\sun.jpg"));
```
Beim ausführen in Eclipse funktioniert das ganze auch wunderbar, nur beim Exportieren als Jar Datei(er packt das Bild auch mit rein) rührt sich das garnix mehr auch wenn ich zum kontrollieren das hier setzte erscheint nichts:

```
g.drawString("path "+pfad,50,480);
```

hier mal der Codeausschnitt:

```
//Bild
      Graphics2D g2 = (Graphics2D)g;
	  try {
		  String pfad = System.getProperty("user.dir");
		  image = ImageIO.read(new FileInputStream(pfad+"\\sun.jpg"));
          g.drawString("path "+pfad,50,480);
      	  } catch (IOException e) { System.out.println(e); }
      	  g2.drawImage(image, 50, 330, 200, 120, this);
```
Nach dem starten der Jar Datei kommt einfach garnicht und wenn ich das ganze in Eclipse starte macht es das was es soll sowohl der Pfad als auch das Bild werden angezeigt. Kann es sein das user.dir mit der reinen VM nicht geht das nur das sdk das kann und der pfad deshalb fehlt?


----------



## fisch (24. Jan 2006)

Hi

Hast du eine Lösung für das Problem gefunden, hab nämlcih das gleiche Prob. Wenn ich in mein Projekt in Eclipse starte funktioniert es wunderbar, wenn ich aber eine jar erstelle dann nimmt er nicht das verzeichnis in dem die jar liegt sonder den in dem das ganze erstellt wurde. und das funzt ja so gar nicht

Hat irgendjemand eine Lösung dafür. mit relativen Pfadangaben passiert bei mir übrigens das gleiche

Edit: Es muss nicht unbedingt die Datei aus dem jar geladen werden, da die Datei auch noch als solche mitgeliefert wird also im Ordner


----------



## Guest (24. Jan 2006)

Hallo,

um auf Bilder oder sonstige Dateien zu zugreifen, egal ob sie in einem Package oder in einem Order abgelegt sind benutze ich folgendes:


```
image = new ImageIcon(getClass().getResource("/package/eventuellerUnterordnerImPackage/image.gif")
```


----------



## fisch (24. Jan 2006)

hm ich hab mir ein paar von den anderen posts zu dem getRessource auch durchgelesen und es funktioniert wenn ich es in eclipse aufrufe, allerdings funktioniert es nicht wenn es als jar ausgeführt wird. kann leider den fehler nicht sagen, da es überhaupt nicht gestartet wird, da gleich zu beginn eine datei geladen werden muss


----------



## thE_29 (25. Jan 2006)

Achja, anstatt eines \\


Immer File.separator verwenden!

Der ist dann unter Win \\ und unter Linux/mac ein /!

Somit hat man immer den richtigen ^^


----------



## byte (25. Jan 2006)

oder einfach /


----------

