Zum Inhalt springen

Speichern


aLeXL

Empfohlene Beiträge

Hi,

ich schreibe eine Java Anwendung (Kein Applet) und möchte die vom user eingegebenen Werte abspeichern.

Allerdings will ich die in keine externe .txt Datei oder sonstiges abspeichern.

Der Wert soll in die selbe Datei wie die Anwendung ist (.jar) abgespeichert werden.

Ebenso möchte ich diesen Wert beim nächsten Start des Programms dann wieder auslesen und anschließend wieder speichern.

Kurz gesagt: Wie speicher ich in die selbe Datei (.jar) ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die einzige Möglichkeit, die ich sehe, besteht darin über Class oder ClassLoader die URL der Ressource abzufragen. Also so etwas:

URL bla = ClassLoader.findResource("bla.txt");

File blaFile = new File(bla.toURI);

Evtl. kannst Du dann einen OutputStream auf diese Datei öffnen.

PS: Danke für die Blumen. :marine Der Avatar ist sogar selbstgemacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

']Kurz gesagt: Wie speicher ich in die selbe Datei (.jar) ?
Gar nicht. Selbst wenn das Betriebssystem den Zugriff auf die JAR Dati zulässt, aus der die Applikation heraus geladen worden ist, so wird - nachdem die Datei verändert und neu gespeichert worden ist - eventuell der ClassLoader nicht mehr in der Lage sein Klassen aus dem Archiv zu laden. Von daher: Finger weg! Ein schlechteres Design kann ich mir kaum noch vorstellen.

Code und Daten gehören getrennt - genau deshalb wirst du deinen geplante Vorgehensweise auch nirgendwo sonst finden. Wieso sträubst du dich so gegen das Speichern der Daten einer externen Resource?

Link zu diesem Kommentar
Auf anderen Seiten teilen

hm, **** :/

wollte mein Programm nur in einer .jar Datei haben. Wenn noch ne externe .txt Datei dranhängt is ***** :(

Aber wie machn das dann die Java Handy Games? Die sind auch .jar und können aber Bestenlisten usw speichern.

Link zu diesem Kommentar
Auf anderen Seiten teilen

']Aber wie machn das dann die Java Handy Games? Die sind auch .jar und können aber Bestenlisten usw speichern.
Ich habe ausser ein paar Grundversuchen noch nichts mit J2ME gemacht, aber auch hier wird es irgendeine Persistenzlösung geben. Sei es eine vom Gerät bereitgestellte Datenbank, in der die Werte gespeichert werden, oder andere Lösungen, aber auch dort wird es nicht in das Programm selbst geschrieben.

Im Zweifel: In den entsprechenden Dokumentationen nachlesen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf Handys läuft auch ein Betriebssystem. Meistens gibt es auch einen "Datei-Manager", mit dem Du die Datei-Struktur des Handys durchsuchen kannst. Ich denke mal, daß die Games eine Datei in das Verzeichnis schreiben, in dem auch das Spiel selbst liegt. Oder es gibt sowas wie eine Registry, auf die man per J2ME zugreifen kann. Aber alles nur Spekulation.

Jedenfalls ist es, perdis Einwände im Kopf, wirklich nicht vertretbar einfach in ein aktiv laufendes .jar zu schreiben. Schreib einfach 'ne Textdatei in das gleiche Verzeichnis, in dem auch Dein .jar liegt. Das kannst Du auch irgendwie ermitteln.

EDIT: Damn. Zu langsam ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

']Bin schwer enttäuscht von java

*lol* Was hat das mit Java zu tun? Das ist ein absolut sprachunabhängiges Phänomen. Programm und Laufzeitdaten gehören nicht miteinander vermischt. Also was genau hat dich jetzt an der Sprache Java enttäuscht? Was könntest du unter C++/COBOL/ADA/... anders machen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

']Joa' date=' ich dacht, sowas wird ja schon irgendwie realisierbar sein. [/quote']Natürlich ist es irgendwie realisierbar, aber nochmal: Jeder, der halbwegs Ahnung von Programmierung hat, wird aus den mehrfach angesprochenen Gründen überhaupt kein Interesse daran haben solch eine Mögichkeit zu nutzen. Und das nicht einmal, weil die Umsetzung kompliziert und aufwendig (aber sicher nicht unmöglich) wäre, sondern schlicht und ergreifend weil es sehr(!) schlechter Stil ist.

So und jetzt akzeptier das einfach oder geh woanders trollen.

Java ist dieses Jahr 15 geworden. Neu ist etwas anderes.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Java ist dieses Jahr 15 geworden. Neu ist etwas anderes.

10, oder? Oak wurde zwar seit 1991 entwickelt, aber Java 1.0 kam 1995 oder 1996.

http://de.wikipedia.org/wiki/Java_%28Technologie%29#Geschichte_Javas

Aber auch bei 10 Jahren gilt das, was meine Vorredner schon erzählt haben. Die Idee macht keinen Sinn, deshalb macht es auch keinen Sinn, das zu implementieren.

Bei Mobiltelefonen gibt es übrigens die Möglichkeit, auf den lokalen Datenspeicher zuzugreifen (habe ich bei meinem ersten und bisher einzigen J2ME-Test gemacht).

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

So und jetzt akzeptier das einfach oder geh woanders trollen.

löl

So aufgebracht habe ich perdi ja noch nicht erlebt. Es geschehen noch Zeichen und Wunder ;)

Aber ich kann mich meinen Vorrednern nur anschließen. Dein Vorhaben bringt 2 Probleme mit sich. Einerseits läßt Windows ein Überschreiben gerade ausgeführter Dateien nicht ohne weiteres zu ("Diese Datei wird gerade verwendet"), zum anderen bricht es mit einem der ältesten Grundsätze der IT: Programme und Daten sind zu trennen. Das war schon bei den ersten Maschinen so. Seien es nun hausgroße Lochkarten-Rechner oder iPods. Daher hat das wirklich nix mit Java oder C/C++, Cobol, Pascal oder Delphi zu tun. Wenn Du schon enttäuscht bist, dann von der Informatik selbst.

Als Lösung kann ich Dir nur empfehlen, die .txt-Datei in das gleiche Verzeichnis wie Dein .jar zu schreiben. So hast Du Programm und Daten getrennt und dennoch am gleichen Fleck.

Link zu diesem Kommentar
Auf anderen Seiten teilen

jo, da hat kingofbrain recht. Java kam erst später raus.

Fassen wir also zusammen: Java gibt es seit 10 Jahren.

C hingegen gibt es seit den 70er Jahren -> 36 Jahre.

@perdi: Jetzt darfst du mir sagen, welches die neuere Programmiersprache ist.

@Newlukai: Jo ok, werde das dann so machen. Zum Speichern kann ich ja den FileWriter nehmen oder ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast
Dieses Thema wurde nun für weitere Antworten gesperrt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...