Dateien aus JAR auslesen

Status
Nicht offen für weitere Antworten.

Iome

Mitglied
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:
Code:
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
Code:
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?
 
Versuch es mal mit einem absoluten Pfad. (Absolut innerhalb des JARs)
Interessant, daß du einem FileReader eine URL übergeben kannst.
 
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:
Code:
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:
Code:
fr = new LineNumberReader(new FileReader(getAbsolutePath()+dateiname));
 
Mit absolutem Pfad meine ich einen Pfad, der mit Slash (/) beginnt: /pfad/zur/datei.txt
Im JAR liegt die Datei dann in "pfad/zur/"
 
... :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?
 
Nicht gleich weinen! 🙁

Versuch mal das hier:

Code:
getClass().getClassLoader().getSystemResource(path);

Liebe Grüße
Reality
 
Hey, jetzt findet er die Datei in dem JAR-Archiv!

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

Code:
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
Code:
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?
 
versuchs mal damit
Code:
fr = new LineNumberReader(new FileReader(getClass().getResource(dateiname)+""));
oder
fr = new LineNumberReader(new InputStreamReader(getClass().getResourceAsStream(dateiname)));
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben