# Dateien aus JAR auslesen



## Iome (11. Jun 2005)

Also, ich arbeite gerade an einem Projekt, und möchte das Projekt nun an Freunde weitergeben. Um den Zugriff auf das Projekt zu vereinfachen habe ich einfach eine JAR-Datei erstellt.

Mein Programm hat unter anderem die Aufgabe eine externe Text-Datei auszulesen. Das klappt auch noch so lange ich die externe Text-Datei nicht in mein JAR-Archiv packe. Damit andere Leute jetzt aber die externe Datei nicht auf den ersten Blick sehen, habe ich sie in mein JAR-Archiv gepackt, doch jetzt geht es nicht mehr:

Ich verwende folgenden Quelltext um die externe Datei auszulesen:

```
String dateiname="lektion2.frz";
fr = new LineNumberReader(new FileReader(getClass().getResource(dateiname)));
```

So, mein Problem ist jetzt, das er die externe Datei nicht in der JAR-Datei findet, obwohl sie da ist!

Habe außerdem rausbekommen, dass wenn ich die JAR-Datei ausführe er bei

```
getClass().getResource(dateiname);
```
den Wert "null" zurück gibt (der Wert "null" heißt somit, das er die externe Datei nicht gefunden hat!)

Was mache ich falsch?


----------



## Guest (11. Jun 2005)

Versuch es mal mit einem absoluten Pfad. (Absolut innerhalb des JARs)
Interessant, daß du einem FileReader eine URL übergeben kannst.


----------



## Iome (12. Jun 2005)

habe gerade mitbekommen, das er nie die Datei findet, weil der Filereader nichts mit der URL anfangen kann!
Danke für deinen Tipp Gast!

So müsste es mit der URL und dem FileReader gehen:

```
dateiname = ""+getClass().getResource(dateiname);
if (!dateiname.equals(null)){
  dateiname = dateiname.substring(6,dateiname.length());
  dateiname = dateiname.replaceAll("%20"," ");
}
```

Meinst du das mit dem absoluten Pfad so:

```
fr = new LineNumberReader(new FileReader(getAbsolutePath()+dateiname));
```


----------



## Iome (12. Jun 2005)

sorry wegen doppeltem Posting, aber das mit dem absoluten Pfad geht nicht!


----------



## Guest (12. Jun 2005)

Mit absolutem Pfad meine ich einen Pfad, der mit Slash (/) beginnt: /pfad/zur/datei.txt
Im JAR liegt die Datei dann in "pfad/zur/"


----------



## Iome (12. Jun 2005)

...  :cry: Ich sitzt hier jetzt schon 4 Stunden, und bekomm es einfach nicht hin die Datei aus dem JAR-Archiv auszulesen!

Kann mir jemand den Quelltext zum Auslesen einer Text-Datei, die sich in einem JAR-Archiv befindet, posten?


----------



## Reality (12. Jun 2005)

Nicht gleich weinen! 

Versuch mal das hier:


```
getClass().getClassLoader().getSystemResource(path);
```

Liebe Grüße
Reality


----------



## Iome (12. Jun 2005)

Hey, jetzt findet er die Datei in dem JAR-Archiv!

Nur das Problem ist jetzt bei mir, dass wenn ich diesen Quellcode nehme:


```
String dateiname="lektion2.frz";
fr = new LineNumberReader(new FileReader(""+getClass().getClassLoader().getSystemResource(dateiname)));
```

kommt der Buffered Reader nicht mit solchen Pfadangaben klar:

jar:file:/C:/Dokumente%20und%20Einstellungen/User/Desktop/vokabeltrainer.jar!/lektion2.frz

Den Buffered Reader stört zum ersten, das da immer "%20" im Pfad steht, und zum zweiten stört ihn, das da "jar:file:/" steht. Das will der Bufferd Reader einfach nicht so hinnehmen!

Gut das mit dem "%20" könnte man mit 
	
	
	
	





```
replaceAll("%20", " ")
```
 hinbekommen, aber was ist mit dem "jar:file:/"? Wenn ich das mit einem substring rausschneide, dann findet er die Datei ja erst recht nicht!

Was muss ich jetzt nun machen, damit es trotzdem funktioniert?
Gibt es vielleicht eine andere Variante um eine Textdatei Zeilenweise aus einem JAR-Archiv auszulesen?


----------



## EagleEye (12. Jun 2005)

versuchs mal damit 

```
fr = new LineNumberReader(new FileReader(getClass().getResource(dateiname)+""));
oder
fr = new LineNumberReader(new InputStreamReader(getClass().getResourceAsStream(dateiname)));
```


----------



## Iome (12. Jun 2005)

DANKE, jetzt läufts!


----------

