Java Projekt als runnable jar file exportieren inklusive csv Dateien

Tschop

Mitglied
Hallo Zusammen,

nachdem mir bei meinem letzten Problem direkt so super geholfen werden konnte, hoffe ich auf ein paar Tipps zu meinem nächsten Problem.

Ich habe ein Java Projekt das beim Start Daten aus mehreren .CSV Datein einließt und anschließend damit arbeitet.
Ich hatte mir das eigentlich so vorgestellt, dass die csv dateien in dem Projekt Ordner liegen und nichtmehr über einen speziellen Pfad eingelesen werden müssen.

Java:
         pfad = "locations.csv";
        br = new BufferedReader(new FileReader(pfad));

Beim Ausführen innerhalb der Entwicklungsumgebung Eclipse funktioniert auch alles ohne Probleme.

Nun will ich die gesamte Applikation als runnable .jar File exportieren.
Ich hatte eigentlich gehofft, dass die .csv Dateien (aus dem Projektordner) mit exportiert werden und somit irgendwie innerhalb der .jar Datei vorhanden sind.
Leider ist dies nicht der Fall.

Hat vielleicht jemand Erfahrung damit wie ich am intelligentesten mit dem Problem umgehen kann?
Ist es möglich, die CSV Dateien in die .jar Datei zu integrieren?


Vielen Dank bereits im vorraus!

Mit freundlichen Grüßen

Andreas Rolf
 
Damit die csv Dateien mit ins jar file gepackt werden müssen die in nem source folder liegen. Allerdings kannst du Dateien innerhalb einer jar nur lesen, nicht schreiben.
Falls du auch schreiben willst solltest du die csv dateien entweder direkt neben die jar legen, oder bspw. nach <user.home>/.deineApp/ kopieren.
 
Vielen Dank Eike für die schnelle Antwort. Das mit dem Lesen ist vorerst auch deutlich wichtiger als das Schreiben.

Habe die csv Dateien jetzt in den src Ordner kopiert und spreche diese jetzt über folgenden Code an:
Java:
         pfad = "src\\locations.csv";
        br = new BufferedReader(new FileReader(pfad));

Leider werden diese immernoch nicht mit exportiert.
Weißt du was ich falsch mache?
 
Entities eines jar sind (in diesem Zustand)keine Dateien/Files und können daher nicht mit einem FileReader ausgelesen werden.
Sie können nur als Stream ausgelesen werden siehe getResourceAsStream(....)
Der Hinweis, dass in ein ausgeführtes jar nicht geschrieben werden kann, kam ja schon.
 
Okay vielen Dank für den Tipp,

ich bin jetzt eigentlich zu dem entschluss gekommen, dass es sowieso sehr unpraktisch ist wenn das Programm die csv Datein anschließend nichtmehr ändern kann.

Es funktioniert immerhin, wenn die csv Dateien im gleichen Ordner wie die .jar Dateien sind.

Mein ursprünglicher Gedanke war jedoch das die Personen, die die Applikation später benutzen, garnicht unbedingt auf die CSV Dateien Zugreifen können/sollen.

Habt ihr vielleicht eine Idee wie ich sowas umsetzen könnte?

Eventuell gibt es eine bessere Möglichkeit die Daten zu Speichern. Ein Zugriff auf eine Datenbank ist leider nicht sinnvoll da diese nicht bei jedem Nutzer verfügbar sein würde.

Eine andere möglichkeit wäre eventuell die csv Datei mit einem passwort zu schützen und das dem bufferedreader zu übergeben (falls sowas möglich ist)
 

Zurück
Oben