Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Guten Tag.
Ich habe ein kleines Problem. Ich muss eine Hashtable und 2 Objekte vom Typ MyDate (extends java.util.Date) in einer Datei speichern. Ich dachte das würde am einfachsten mit Object Serialisierung gehen.
Das einfachste wäre demnach eine Klasse zu schreiben die Object[] in eine Datei schreibt. Dies müsste doch zu berwerkstelligen sein, oder?
Allerdings bekomme ich immer merkwürdige Fehlermeldungen.
Das merkwürdigste ist, dass es funktionniert solange ich ohne OpenDialog fahre. d.h. immer die selbe Datei schreibe und öffne.
Ich bekomme folgende Fehlermeldung :
writing aborted; java.io.NotSerializableException: javax.swing.plaf.basic.BasicDirectoryModel$LoadFilesThread
Hier ist die Klasse die ich geschrieben habe :
Code:
package general;
import java.io.*;
import javax.swing.JFileChooser;
public class FileOutput implements Serializable {
public static final long serialVersionUID = 123456L;
private class MyFileChooser extends JFileChooser{}
MyFileChooser myChooser = new MyFileChooser();
private File FileName;
private class object implements Serializable
{
public Object[] data;
}
public void SaveToFile(Object[] data)
{
int result = myChooser.showSaveDialog(null);
if (result==JFileChooser.APPROVE_OPTION){
FileName = myChooser.getSelectedFile();
try{
int i = data.length;
FileOutputStream FileOut = new FileOutputStream(FileName);
ObjectOutputStream ObjectOut = new ObjectOutputStream(FileOut);
object Data = new object();
Data.data = data;
ObjectOut.writeObject(Data);
ObjectOut.flush();
ObjectOut.close();
}
catch(Exception e){}}
}
public Object[] OpenFromFile()
{
int result = myChooser.showOpenDialog(null);
if (result==JFileChooser.APPROVE_OPTION){
FileName = myChooser.getSelectedFile();
Object[] data = null;
try{
FileInputStream FileIn = new FileInputStream(FileName);
ObjectInputStream ObjectIn = new ObjectInputStream(FileIn);
object Data = (object) ObjectIn.readObject();
data = Data.data;
ObjectIn.close();
}
catch (Exception Ex){System.out.println("Error :" + Ex.getMessage() ) ;}
return data;}
else return null;
}
}
Ich hoffe ihr könnt mir weiterhelfen. Danke im Voraus.[/b]
Danke für deine Hilfe. Ich weiss object war ein blöder Name, allerdings war es ja auch bloss eine Probierversion.
Ich habe die Klasse nun umgeschrieben. allerdings bekomme ich nun folgende Fehlermeldung.
Data.DataSet ist der Typ der Objekte im Hashtable. Muss die Klasse DataSet denn nun auch Serializable implementieren?
Hier der Code der neuen Klasse :
Code:
package general;
import java.io.*;
import javax.swing.JFileChooser;
import java.util.ArrayList;
public class FileOutput implements Serializable {
public static final long serialVersionUID = 123456L;
private class MyFileChooser extends JFileChooser{}
MyFileChooser myChooser = new MyFileChooser();
private File FileName;
public void SaveToFile(Object[] data)
{
int result = myChooser.showSaveDialog(null);
if (result==JFileChooser.APPROVE_OPTION){
FileName = myChooser.getSelectedFile();
try{
int i = data.length;
FileOutputStream FileOut = new FileOutputStream(FileName);
ObjectOutputStream ObjectOut = new ObjectOutputStream(FileOut);
ArrayList list = new ArrayList();
for (int j=0;j<i;j++) list.add(data[j]);
ObjectOut.writeObject(list);
ObjectOut.flush();
ObjectOut.close();
}
catch(Exception e){}}
}
public Object[] OpenFromFile()
{
int result = myChooser.showOpenDialog(null);
if (result==JFileChooser.APPROVE_OPTION){
FileName = myChooser.getSelectedFile();
Object[] data = null;
try{
FileInputStream FileIn = new FileInputStream(FileName);
ObjectInputStream ObjectIn = new ObjectInputStream(FileIn);
ArrayList Data = (ArrayList) ObjectIn.readObject();
ObjectIn.close();
data = new Object[Data.size()];
for (int i=0;i<Data.size();i++)data[i] = Data.get(i);
}
catch (Exception Ex){System.out.println("Error :" + Ex.getMessage() ) ;}
return data;}
else return null;
}
}