Farben und Strings

Sofern das normal ist, dass dann total unleserliches Zeugs in der Datei als Plaintext steht, ist alles ok und deine Lösung toll xD
Das Problem is, ich kann nichmal alle Zeichen hier reinkopieren die da stehen, das Forum kennt die Zeichen nicht...

Und was stört dich daran? Es muss doch niemand (kein Mensch) lesen können. Außerdem sind da lediglich ein paar Steuerzeichen dazwischen, welche in der Systemschriftart keine Darstellung haben.

Wie sieht denn dein Test-Code aus? Ich schreibe schnell mal selbst ein Test zur Demonstration.

Edit: Folgender Code funktioniert einwandfrei und das auslesen der Datei funktioniert!
Java:
public static void main(String[] args) throws Exception {
    Color[] colors = new Color[] {Color.red, Color.green};

    //Farb-Array in Datei schreiben
    writeColors("datei.col", colors);

    //Auslesen
    Color[] anotherArray = readColors("datei.col");

    Frame fenster = new Frame("Titel");
    fenster.setSize(100, 100);
    fenster.setBackground(anotherArray[1]);//Grüner Hintergrund!
    fenster.setVisible(true);
}
 
Zuletzt bearbeitet:
Ich kriege alleine schon im Button, der das Speichern in Gang setzt fiese Fehler.

Code:
private void colorScheme4ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        //Privatfarbe:  Türkis      RGB:    0/128/128
        //Dienstfarbe:  Rot         RGB:    210/0/0
        privateColor = new Color(0,128,128);
        publicColor = new Color(210,0,0);
        Color colors[] = new Color[] {privateColor, publicColor};
        //Farbarray in Datei schreiben
        writeColor(colors);
    }

Code:
private void writeColor(Color[] colors) throws Exception {
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("./././colors.col"));
        out.writeObject(colors);
        out.close();
    }

Der behauptet ständig, dass da ne unreported exception geworfen wird, die caught, declared oder thrown werden soll. Das passiert ja eigentlich in deiner Funktion auch - ist Netbeans aber egal.
Wenn ich wie Netbeans mir das anbietet automatisch den Try{-Catch{-Block hinzufügen lasse, macht er nur den Try Anteil fertig, es gibt noch mehr Fehler. Also prinzipiell glaube ich dir, dass dein Code funktioniert - aber eben nur solange, wie du das alles schön automatisiert von der main machen lässt - sobald ein dussliger Button dazwischen kommt, gehts jedenfalls nicht mehr.
 
Das hat mit dem Button nichts zu tun. Ich reiche in meinen Methoden alle Exceptions nach außen weiter bis zur JVM. Du musst also entweder die Exception vorher abfangen (bester weg) oder die Methode colorScheme4ActionPerformed() muss ebenfalls die Exception nach außen weiter geben (und alle Ebenen darüber ebenfalls).

Hier eine Variante, bei der du nur die ParseException abfangen musst (um zu erfahren, ob das Auslesen funktioniert hat.).
Beim schreiben sagt dir der Rückgabewert, ob es geklappt hat,

Java:
import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.text.ParseException;

class ColorWriterReader {
    public static void main(String[] args) throws Exception {
        Color[] colors = new Color[] {Color.red, Color.green};

        ColorWriterReader crw = new ColorWriterReader();

        //Farb-Array in Datei schreiben
        crw.writeColors("datei.col", colors);

        //Auslesen
        Color[] anotherArray = crw.readColors("datei.col");

        //anotherArray benutzen
    }
	
	private boolean writeColors(String fileName, Color[] colors) {
        try
        {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName));

            out.writeObject(colors);

            out.close();

            return true;
        }
        catch(Exception ex)
        {
            return false;
        }
    }
    
    private Color[] readColors(String fileName) throws ParseException {
        try
        {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));

            Object o = in.readObject();

            in.close();

            if(o instanceof Color[])
                return (Color[])o;            
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
            
            throw new ParseException("Irgendwas anderes hat nicht geklappt.", 0);
        }

        throw new ParseException("Datei entählt kein Objekt vom Typ Color[]", 0);
    }
}
 
Zuletzt bearbeitet:
Ich hab wirklich keine Ahnung, wieso dein Code bei mir nichts tut außer nicht zu funktionieren, allerdings hab ich es nun weit umständlicher gelöst, dafür funktioniert es auch an diesem Gerät *lach* Trotzdem vielen Dank für deine Hilfe - ich sehe ja, dass das theoretisch klappen sollte, was du mir da geschrieben hast, tat es nur halt nicht, die Mühe wertschätze ich aber trotzdem.
Ich lese jetzt "einfach" die beiden Strings aus, lösche mit Replace alles, was nicht Zahl ist und schreibe die drei Zahlen in je eine int rein, um damit ne neue Farbe zu erzeugen... is nicht schön, klappt aber^^
Damit ist das Thema dann auch erledigt ;-)
 
Ich lese jetzt "einfach" die beiden Strings aus, lösche mit Replace alles, was nicht Zahl ist und schreibe die drei Zahlen in je eine int rein, um damit ne neue Farbe zu erzeugen... is nicht schön, klappt aber^^

Genau das nimmt dir eben der ObjectInputStream ab, indem er eine neue Instanz des Objektes erstellt und alle Datenelemente aus der Datei ausließt und wiederherstellt ;)

Aber gut, wenn du jetzt eine Lösung gefunden hast.
 
Zurück