Object speichern im resourced Ordner von Maven

Hallo

Ich möchte mit

			fos = new FileOutputStream("/"+"temp.inc");

			oos = new ObjectOutputStream(fos);

			oos.writeObject(niModel);

Ein Objekt auf der Festplatte speichern, dabei soll die Datei im resources Ordner von Maven landen. Egal wie ich das anstelle, es klapt nicht.

Kann mir jemand sagen wie das geht?

Das Laden der Objekte aus dem res Ordner geht mit getResourcesAsStream problem los…

Du musst den Pfad natürlich korrekt angeben. So wie er jetzt dasteht, landet die Datei im Wurzelverzeichnis des Dateisystems (vermutlich unter C: ). Ist aber sowieso eine schlechte Idee. Denn “getResourceAsStream” liefert Dir nicht notwendigerweise einen FileInputStream. Wenn Du irgendwann mal Deine Anwendung in ein jar packst, kommt da ein JarInputStream zurück. Und dann gibt es auch keinen Resources-Ordner mehr. Dann ist es das default-Package im jar. Da fällt das Schreiben dorhin onehin flach.

Trenne gedanklich ganz klar zwischen Filesystem- und Classpath-Resourcen. Letztere sind nur für’s Lesen geeignet. Typischerweise schreibt man in den Temp-Ordner oder in einen (versteckten) Unterordner des Homeverzeichnisses des Users. Beides kann über die Systemproperties ausgelesen werden. Temp-Files kann man mittels der Files-Klasse auch direkt erzeugen.

Da ist sicherlich nicht richtig was du da machst.

Den Ressourcen Ordner src/main/resources gibt es nur zur Build zeit, nicht zur normalen Laufzeit, d.h. das funzt sowieso nur im Build aber nicht mehr wenn das Projekt normal gestartet wird.
Dazu kommt, dass man es vermeidet Ressourcen bzw. Quellen unter src automatisch zu generieren, sind ja keine Quellen(!), das verwirrt nur das SCM und die anderen Entwickler, der richtige Pfad waere target/generated-ressources.

Also die Gretchen Farge:
Was willst du denn eigentlich machen?

Ich möchte Daten für ein Formular speichern. Für jeden Monat gibt es ein Formular. im jeweils neuen Monat wenn das Formal noch nagel neu ist soll ein Objekt angelegt werden mit dem dann dden ganzen Monat durch gearbietet werden soll. Das heisst miitten im monat soll dann das Objekt geladen werden damit der Nutzer weitere Daten hinzufügen und wieder speichern kann.

Beim 1. des nächsten Monats muss dasProgramm feststellen das es noch kein objekt für diesen neuen Monat gibt und einen anlegen.

[quote=ZickZack]Ich möchte Daten für ein Formular speichern. Für jeden Monat gibt es ein Formular.[/quote]Das sollte nicht im Installationsordner des Programms sondern im Arbeitsverzeichnis des Benutzers erstellt werden (System.getProperty("user.home")).

[quote=ZickZack;106338]Beim 1. des nächsten Monats muss dasProgramm feststellen das es noch kein objekt für diesen neuen Monat gibt und einen anlegen.[/quote]Du könntest mit String.format("hier das format",new Date()) einen passenden Dateinamen basteln und dann schauen, ob es den schon gibt oder nicht…

bye
TT

Am besten dort dann noch, wie von nillehammer vorgeschlagen, einen Ordner .anwendungsname erstellen und dort dann die Daten hineinlegen.