Telefonbuch problem

.maik.

Bekanntes Mitglied
dieses mal brauche ich eure hilfe echt, bin völlig am verzweifeln. ich bin dabei ein telefonbuch zu schreiben und möchte die daten persistent speichern. nutze dazu die standard serialisierung. und zwar schreibe ich ein array in eine .ser datei und möchte es einfach auslesen . irgendwie wird aber nur der wert mit index 0 ausgeben. wie speichert man denn arrays? ich habe es so gemacht:
Java:
  public void actionPerformed(ActionEvent e)
  {
    data[i][0]=name.getText();
    data[i][1]=number.getText();
    try
    {
      file.delete();
      oos.writeObject(data);
    }
    catch(IOException a){System.out.println("Damn");}
    i++;
  }
diese methode wie ausgeführt wenn daten eingetragen werden.
wäre cht nett, wenn mir einer helfen würde?
 

HoaX

Top Contributor
Sicher dass mehrere Einträge im Array sind?
Wie hast du geprüft dass nur einer drin ist?
Mach uns doch mal ein KSKB ...
 

Dit_

Bekanntes Mitglied
du könntest einfach Objektorientiert programmieren.

Java:
public class TelefonBuchEintrag implements Serializable {
	
	private static final long	serialVersionUID	= -7919609629557094153L;
	
	private String name;
	private String number;
	
	
	/**
	 * Setzt number
	 * @param number neue Nummer
	 */
	public void setNumber(String number) {
		this.number = number;
	}
	/**
	 * @return the number
	 */
	public String getNumber() {
		return number;
	}
	/**
	 * Setzt name
	 * @param name neuer Name
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
}

und dann nicht mit
Code:
TelefonBuchEintrag[] _eintraege
sondern mit
Code:
List<TelefonBuchEintrag> _eintraege
arbeiten.
 

.maik.

Bekanntes Mitglied
irgendwie läuft bei alles schief. was passiert wenn cih aus einer datei gelsen haben und nun dasselbe objekt nochmal lesen moechte. da kommt bei mir immer ein io fehler.
danke
 

Michael...

Top Contributor
irgendwie läuft bei alles schief. was passiert wenn cih aus einer datei gelsen haben und nun dasselbe objekt nochmal lesen moechte. da kommt bei mir immer ein io fehler.
danke
Da wäre wohl die genaue Fehlermeldung interessant.
Wird ein ObjektInputStream genutzt? Ein Stream ist halt ein Stream, denn kann man nicht unbedingt zurücksetzen. (Ausser beim Schreiben)
Warum muss denn dasselbe nochmals gelesen werden?
 

.maik.

Bekanntes Mitglied
ich habe es versucht jetzt anders zu schreiben, ist ist zweik Klassen aus meinem Programm:
Java:
class InsertListener implements ActionListener
{
  JTextField name, number;
  OutputStream os = null;
  ObjectOutputStream oos;
  File file;

  public InsertListener(JTextField name, JTextField number)
  {
    this.name = name;
    this.number = number;
    file = new File("saves/data.ser");
    try
    {
      os = new FileOutputStream(file);
      oos = new ObjectOutputStream(os);
    }
    catch (IOException b){System.out.println(b);};
  }

  public void actionPerformed(ActionEvent e)
  {
    try
    {
    oos.writeObject(name.getText());
    oos.writeObject(number.getText());
    }
    catch(IOException t){System.out.println(t);}
  }
}

class ShowListener implements ActionListener
{
  JFrame showFrame;
  String[] columnNames;
  JScrollPane con;
  int i = 0;
  InputStream is;
  ObjectInputStream ois;

  public ShowListener()
  {
    showFrame = new JFrame("Data");
    showFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    showFrame.setBounds(100,50,300,400);
    columnNames = new String[2];
    columnNames[0] = "Names";
    columnNames[1] = "Numbers";
    try
    {
      is = new FileInputStream("saves/data.ser");
      ois = new ObjectInputStream(is);
    }
    catch(IOException b){System.out.println(b);}
  }

  public void actionPerformed(ActionEvent e)
  {
    showFrame.setVisible(false);
    boolean leer = false;
    int i = 0;
    String[][] inhalt = new String[150][2];
    while(!leer)
    {
      try
      {
      inhalt[i][0] = (String) ois.readObject();
      inhalt[i][1] = (String) ois.readObject();
      }
      catch(ClassNotFoundException d){System.out.println(d);}
      catch(IOException l){System.out.println(l); leer = true;}
      i++;
    }
    String[][] shortInhalt = new String[i][2];
    while(i >= 0)
    {
      shortInhalt[i][0] = inhalt[i][0];
      shortInhalt[i][1] = inhalt[i][1];
      i = i--;
    }
    if(this.i != 0)
      showFrame.remove(this.con);
    this.con = new JScrollPane(new JTable(shortInhalt, columnNames));
    showFrame.add(this.con);
    showFrame.setVisible(true);
    this.i++;
  }
}
...mit der Absicht ein Array nicht in eine Datei schreiben zu müssen- läuft aber immer noch nicht. jetzt kommt nullpinterxception beim readen. danke für die Hilfe *_*
 

.maik.

Bekanntes Mitglied
oder kann mir jemand eine bessere lösung vorschlagen um ein array resistent zu speichern und auch überschreiben zu können. oder habe ich nur etwas flasch gemacht? ich habe die datei mit file.delete(); gelöscht und dann mit file.newCreateFile() neu erzeugt - irgendwie habe ich auch immer read Fehler. wie funktioniert das lesen denn ? gibt es einen zeiger oder woher weiß das objectoutputstream obejct, welches int zum beispiel es nehmen soll?
sorry, wegen den vielen fragen, aber ich verzweifle schon seit mehreren tagen
 

.maik.

Bekanntes Mitglied
kann sicg bitte einer mal diesen code angucken :
Java:
class InsertListener implements ActionListener
{
  JTextField name, number;

  public InsertListener(JTextField name, JTextField number)
  {
    this.name = name;
    this.number = number;
  }

  public void actionPerformed(ActionEvent e)
  {
    File fileData = new File("saves/data.ser");
    File fileSize = new File("saves/size.ser");
    try
    {
      OutputStream os = new FileOutputStream(fileData);
      ObjectOutputStream oos = new ObjectOutputStream(os);
      OutputStream os_second = new FileOutputStream(fileSize);
      ObjectOutputStream oos_second = new ObjectOutputStream(os_second);
      InputStream is = new FileInputStream("saves/data.ser");
      ObjectInputStream ois = new ObjectInputStream(is);
      oos.writeObject(name.getText());
      oos.writeObject(number.getText());
      oos.close();
      int x;
      if(ois.available() >= 0)
        x = (int)ois.readInt();
      else
        x = 0;
      ois.close();
      x++;
      fileSize.delete();
      fileSize.createNewFile();
      oos_second.writeInt(x);
      oos_second.close();
    }
    catch(IOException t){System.err.println(t);}
  }
}

class ShowListener implements ActionListener
{
  JFrame showFrame;
  String[] columnNames;
  JScrollPane con;
  int i = 0;

  public ShowListener()
  {
    showFrame = new JFrame("Data");
    showFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    showFrame.setBounds(100,50,300,400);
    columnNames = new String[2];
    columnNames[0] = "Names";
    columnNames[1] = "Numbers";
  }

  public void actionPerformed(ActionEvent e)
  {
    showFrame.setVisible(false);
    int w = 0;
    ObjectInputStream ois = null;
    try
    {
      InputStream is = new FileInputStream("saves/data.ser");
      ois = new ObjectInputStream(is);
      InputStream is_second = new FileInputStream("saves/size.ser");
      ObjectInputStream ois_second = new ObjectInputStream(is_second);
      w = (int)ois_second.readInt();
      ois_second.close();
    }
    catch(IOException m){System.out.println(m);}
    if(ois != null)
    {
      String[][] inhalt = new String[w][2];
      w--;
      while(w >= 0)
      {
        try
        {
          inhalt[w][0] = (String) ois.readObject();
          inhalt[w][1] = (String) ois.readObject();
        }
        catch(ClassNotFoundException d){System.out.println(d);}
        catch(IOException l){System.out.println(l);}
        w--;
      }
      try{ois.close();}catch(IOException g){System.out.println(g);}
      if(this.i != 0)
        showFrame.remove(this.con);
      this.con = new JScrollPane(new JTable(inhalt, columnNames));
      showFrame.add(this.con);
      showFrame.setVisible(true);
      this.i++;
    }
  }
}
ich weiß echt nicht weiter. wenn ich auf den button insert im programm drücke kommt immer ein EOFException. also zum Code: die erste Klasse ist, soll name und number eintragen in eine datei und zusätzlich noch den zähler, wie viele einträge es gibt, um 1 erhöhen und in eine seperate datei schreiben . den zähler verwende ich dann in der zweiten klasse, die ein fenster mit den daten in einer tabelle erzeugt, um die größe des arrays zu kennen.
hoffe das reicht. bitte bitte kann mir einer helfen.

danke danke
 

Eldorado

Bekanntes Mitglied
Also, meine Vorschläge für diese Klasse jetzt:
1. Ich würde einen FileWriter (Java Platform SE 6) benutzen, da du ja keine Objekte, sondern hier nur Strings in die Datei schreibst
2. Du brauchst die Datei nicht zu löschen. Dem Konstruktor vom FileWriter kannst du sagen, ob er überschreiben oder anhängen soll
3. Die Zeile der EOFException wäre interessant
4. Auch zum einlesesn brauchst du keinen ObjectInputStream, sondern könntest eigentlich direkt den FileInputStream verwenden

Ich würde halt immer versuchen möglichst "einfache" Klassen zu verwenden, um so Fehler zu vermeiden. Den direkt Fehler sehe ich jetzt nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Telefonbuch Java Basics - Anfänger-Themen 2
L Telefonbuch erstellen Java Basics - Anfänger-Themen 2
A Im Telefonbuch eine Tabelle ergänzen Java Basics - Anfänger-Themen 6
K Telefonbuch Implementation mit Java Collections Java Basics - Anfänger-Themen 4
kitz Telefonbuch (Vector) Java Basics - Anfänger-Themen 17
P Telefonbuch (Console) Java Basics - Anfänger-Themen 8
M Telefonbuch Java Basics - Anfänger-Themen 3
J Telefonbuch entwickeln Java Basics - Anfänger-Themen 6
M Telefonbuch in einem Handy GUI! Java Basics - Anfänger-Themen 3
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben