aLeXL Geschrieben 31. Mai 2006 Geschrieben 31. Mai 2006 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) ?
geloescht_Newlukai Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 Ich bin mir nicht sicher, ob es überhaupt geht, da Windows wohl das .jar beider Ausführung vor schreibenden Zugriffen schützt. Wie es ginge, müßte ich noch nachforschen.
aLeXL Geschrieben 1. Juni 2006 Autor Geschrieben 1. Juni 2006 Hm, wär aber schon ganz gut, weil ne extra .txt wär bissl blöd für das kleine Script :/ Schönes Benutzerbild hast du da
geloescht_Newlukai Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 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.
perdian Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 ']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?
aLeXL Geschrieben 1. Juni 2006 Autor Geschrieben 1. Juni 2006 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.
perdian Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 ']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.
geloescht_Newlukai Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 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
perdian Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 ']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?
Klotzkopp Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 ']Bin schwer enttäuscht von javaAbgesehen davon, dass das wenig mit der Sprache an sich zu tun hat: Du solltest froh sein, dass sich diese grottige Idee nicht umsetzen lässt. Wirklich. Du schreibst ja deine Einkaufsliste auch nicht auf die Unterarme.
zirri Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 ']najut. Bin schwer enttäuscht von java achso und in C schreibst Du dann Deine permanenten Daten in Deine .exe ???
aLeXL Geschrieben 1. Juni 2006 Autor Geschrieben 1. Juni 2006 ^^ ^^ Joa, ich dacht, sowas wird ja schon irgendwie realisierbar sein. Gerade bei der tollen, neuen Programmiersprache Java gibts da doch sicher ne Möglichkeit.
perdian Geschrieben 1. Juni 2006 Geschrieben 1. Juni 2006 ']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.
kingofbrain Geschrieben 2. Juni 2006 Geschrieben 2. Juni 2006 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
geloescht_Newlukai Geschrieben 2. Juni 2006 Geschrieben 2. Juni 2006 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.
aLeXL Geschrieben 2. Juni 2006 Autor Geschrieben 2. Juni 2006 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 ?
Jaraz Geschrieben 2. Juni 2006 Geschrieben 2. Juni 2006 da Thema erledigt -> Thread zu [Edit: Auf Wunsch wieder geöffnet. Diskutiert wird nur das mögliche/optimale Speichern von Daten und keine sonstigen nebensächlichen Enttäuschungen, Altersfragen oder ähnliches.]
Empfohlene Beiträge