Ergebnis 1 bis 11 von 11

Thema: Vector<class> laden und speichern per Java

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #3
    n1<3! Annotations höre ich nun das erste mal und die Casts.. naja, wenn man es nicht täglich braucht vergisst man es halt :)

    Danke für das sehr ausführliche Beispiel (wäre so gar nicht nötig gewesen, aber immer schön zu sehen wie es funktioniert).

    Ist die Wildcard <?> für den Vector wirklich nötig? Bei mir kompiliert es auch ohne diese Angabe - oder ist das Platform/Versionsabhängig?

    Und gibt es einen Grund die Klassen auf String-Ebene zu vergleichen? Im folgenden Beispiel habe ich die equal-Methode der Class-Klasse genutzt. (und wenn der fragliche Vector als Paramter übergeben wird, spart man sich doch auch die if != null Abfrage),

    Die Randfrage wie man mehrere Objekte in eine Datei speichert hat sich von selbst erledigt. Hier ein kleines (hard code) Beispiel für 2 Objekte.
    Code:
    import java.io.*;
    import java.util.Vector;
    
    public class Main{
    
      public static void save(Vector data, Vector data2, String filename){
        try{
          ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename));
          oos.writeObject(data);
          oos.writeObject(data2);
          oos.close();
        }catch(Exception e){System.out.println("Fehler beim Speichern der Datei "+filename);}
      }
    
      public static Vector[] load(String filename){
        try{
          ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename));
          Vector[] result = new Vector[2];
          result[0] = (Vector) ois.readObject();
          result[1] = (Vector) ois.readObject();
          return result;
        }catch(Exception e){
          System.out.println("Fehler beim Lesen der Datei "+filename);
          return null;
          }
      }
    
      public static boolean hasStrings(Vector data){
        return new Vector<String>().getClass().equals(data.getClass());
      }
    
      @SuppressWarnings("unchecked") public static Vector<String> convertData(Vector data){
        return (Vector<String>) data.clone();
      }
    
      public static void main(String[] args){
        String filename = "tmp";
        Vector<String> data1 = new Vector<String>();
        Vector<String> data2 = new Vector<String>();
        data1.add("foo");
        data2.add("bar");
        System.out.println(data1.get(0)+" "+data2.get(0));
        save(data1, data2, filename);
    
        Vector<String> ndata1 = new Vector<String>();
        Vector<String> ndata2 = new Vector<String>();
        Vector[] tmp = load(filename);
        
        if(hasStrings(tmp[0])) ndata1 = convertData(tmp[0]);
        if(hasStrings(tmp[1])) ndata2 = convertData(tmp[1]);
    
        System.out.println(ndata1.get(0)+" "+ndata2.get(0));
      }
    }

    Geändert von YoshiGreen (30.05.2011 um 18:14 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •