musti Geschrieben 14. Juni 2010 Teilen Geschrieben 14. Juni 2010 Hey Leute, wir haben in Programmieren 2 eine Hausarbeit bis morgen zu machen. Ich quäl mich schon seid wochen mit der aufgabe. hab die ersten aufgaben alle hinbekomme. doch zum ende hin klappt gar nix mehr 1.h) Der Anwender des Projektes soll die Möglichkeit erhalten, einen vorher in einer Textdatei gespeicherten Zustand einzulesen. Stellen Sie sicher, dass dabei die gleiche Information nicht mehrfach im Programm gespeichert wird. Wie mache ich das??? Ich kapier das nicht. und Serialisierung: i) Entwerfen und erstellen Sie eine Methode, welche die gesamte Datenbank bzw. den Inhalt der Spielzeugkiste in binärer Form in eine Datei zu serialisiert. j) Entwerfen und erstellen Sie eine Methode, mit deren Hilfe die serialisierten Inhalte im Programm wieder zur Verfügung gestellt werden können. k) Nutzen die Möglichkeiten aus i) und j) um den Programmzustand beim Verlassen des Programms zu sichern und die Datenstrukturen der Anwendung bei der Erstellung wieder mit diesem Zustand zu initialisieren. Davon habe ich Gar keine ahnung. wäre echt lieb, wenn ihr mir etwas weiterhilft. hier mein Quelltext import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.io.*; import java.util.Scanner; import java.util.*; /** * Beschreiben Sie hier die Klasse DateiManager. * * @author (Ihr Name) * @version (eine Versionsnummer oder ein Datum) */ public class DateiManager implements Serializable { private String[] splitArray; public void schreiben(Spielzeugkiste dieSpielzeugkiste, String dateiname) { ArrayList<Baukloetze> baukloetze; baukloetze = dieSpielzeugkiste.gibBaukloetze(); try { File datei = new File(dateiname + ".txt"); if(datei.exists()) { System.out.println("Datei gibt es schon."); } else { FileWriter writer = new FileWriter(datei); for(Baukloetze bauklotz : baukloetze) { writer.write(bauklotz.toString()); writer.write('\n'); writer.write('\n'); } writer.close(); } } catch (IOException e) { // beim Zugriff auf die Datei ist etwas schief gegangen } } public void lesen(String dateiname) { String name = dateiname; String zeile = null; try { BufferedReader in = new BufferedReader(new FileReader(name + ".txt")); while ((zeile = in.readLine()) != null) { System.out.println(zeile); } } catch (IOException e) { // beim Zugriff auf die Datei ist etwas schief gegangen } } public void Scan(String dateiname) throws FileNotFoundException { BufferedReader reader = new BufferedReader(new FileReader (dateiname + ".txt")); Scanner scanner = new Scanner(reader); while(scanner.hasNextLine()) { String line = scanner.nextLine(); splitArray = line.split(" "); for(int a = 2; a<= splitArray.length-1; a= a+3) { System.out.println(splitArray[a]); } } } } ist ein anfängerprogramm was mit bluej geschrieben worden ist. also wenn fehler entdeckt werden, könnt ihr mir das sagen. wäre echt lieb, wenn ihr mir weiterhelfen könntet danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. Juni 2010 Teilen Geschrieben 14. Juni 2010 Du musst Deine Objekte serialisieren und dann in eine Datei schreiben bzw. wenn Du sie wieder herstellen willst, eben Datei öffnen und die Daten lesen. Java bietet dafür das Interface Serializable an Serializable (Java 2 Platform SE v1.4.2) Das ganze ist hier auch recht gut erklärt Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 14.12 Persistente Objekte und Serialisierung Du musst eben nur in Deinem Datenbankobjekt die entsprechende Serializable Schnittstellen implementieren und dann kannst Du das Objekt via Datei Output bzw Inputstream schreiben und lesen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smash Geschrieben 14. Juni 2010 Teilen Geschrieben 14. Juni 2010 Für mich sieht es so aus, als ob die zwei Aufgaben, zwei Lösungsansätze sind, um dasselbe Problem zu lösen. Einmal werden die Daten in einer Textdatei gespeichert, ein anderes mal in einer Binärdatei über die Seralisierung. Ob du wirklich beides machen musst, musst du selber wissen oder klären. Für das Auslesen der Textdatei hast du anscheinent zwei Methoden. Warum? Außerdem Fehlt noch die Implementierung, um die Daten aus der Textdatei wieder zu Bauklotz-Objekten zusammen zu setzen. Hier wäre es nützlich zu wissen, was denn eigentlich gespeichert wird oder werden soll. Eine gute Möglichkeit Daten systematisch in einer Textdatei zu speichern wäre eine CSV-Datei (Comma Separated Values). CSV (Dateiformat) ? Wikipedia Jede Zeile steht für einen Bauklotz. Die einzelnen Attribute werden durch ein Trennzeichhen getrennt (z.B. Semikolon oder Komma). Mit line.split(TRENNZEICHEN); erhälst du dann den Array mit den Attributen. Mach dir doch ne Methode, die aus einem Bauklotz einen String mit Trennzeichen macht. Dann noch eine Methode, die aus einem String mit Trennzeichen wieder einen Bauklotz macht. Diese Methode rufst du für jeden Bauklotz auf, je nachdem ob gespeichert oder gelesen werden soll. Gibt es denn nur Bauklötze in der Spieltzeugkiste? Wie sind die Bauklötze genau aufgebaut? Diese Antworten auf diese Fragen könnten wichtig sein. Auch in Bezug darauf: Stellen Sie sicher, dass dabei die gleiche Information nicht mehrfach im Programm gespeichert wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. Juni 2010 Teilen Geschrieben 14. Juni 2010 Eine gute Möglichkeit Daten systematisch in einer Textdatei zu speichern wäre eine CSV-Datei (Comma Separated Values). [..] Gibt es denn nur Bauklötze in der Spieltzeugkiste? Wie sind die Bauklötze genau aufgebaut? und genau aus diesem Grund gibt es das Interface Serializable, in jeder Klasse muss man dann das Interface implementieren, damit man dann die Objekte inkl der abhängigen Objekte serialisieren kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
musti Geschrieben 14. Juni 2010 Autor Teilen Geschrieben 14. Juni 2010 Hab hier mal die Aufgabe angehängt, damit ihr wisst um was es geht. ist denk ich mal hilfreicher. Wurde mit BlueJ implementiert danke für die hilfeBauklötze_emel.rar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
musti Geschrieben 15. Juni 2010 Autor Teilen Geschrieben 15. Juni 2010 so hab das mit dem Serialisiern hinbekommen public void serialSpeichern(Spielzeugkiste dieSpielzeugkiste, String dateiname) { OutputStream fos = null; try { fos = new FileOutputStream(dateiname + ".txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(dieSpielzeugkiste); } catch (IOException e) { System.err.println(e); } finally { try { fos.close(); } catch (Exception e) {} } } public Spielzeugkiste deserial(String dateiname) { InputStream fis = null; try { fis = new FileInputStream( dateiname + ".txt"); ObjectInputStream ois = new ObjectInputStream(fis); return (Spielzeugkiste) ois.readObject(); } catch (IOException e) { System.err.println(e); } catch (ClassNotFoundException e) { System.err.println(e); } finally { try { fis.close(); } catch (Exception e) {} } return null; } } Doch die aufgabe mit dem scnner macht mir riesige sorgen danke für die hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.