ObservableList Implementations are not Serializable (in fact, there is no reasonable way to define behavior for serializing listeners, and not for serializing listeners in general - this is just like serializing an unobservable list with the same data, I think this is what you want to do here.) Assuming your Person class is Serializable (and these instances can be serialized), you can do:
public void write(ObservableList<EmployeeEntity> personObservalble) { try { // write object to file FileOutputStream fos = new FileOutputStream("Objectsavefile.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(new ArrayList<EmployeeEntity>(personsObservable)); oos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
To read it, you must:
ObjectInputStream ois = ... ; List<EmployeeEntity> list = (List<EmployeeEntity>) ois.readObject(); personsObservable = FXCollections.observableList(list);
Here is the complete test. I ran this and it worked (I deleted the save annotations since I did not have javax.persistence on the classpath in the test environment, but this should not make any difference).
import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import javafx.collections.FXCollections; import javafx.collections.ObservableList; public class SerializeObservableListTest { public static void main(String[] args) throws IOException { EmployeeEntity bill = new EmployeeEntity("1000", "Seattle, WA", "1000", "Bill", "Gates"); EmployeeEntity tim = new EmployeeEntity("2000", "Mobile, AL", "2000", "Tim", "Cook"); ObservableList<EmployeeEntity> staff = FXCollections.observableArrayList(bill, tim); Path temp = Files.createTempFile("employees", "ser"); write(staff, temp); ObservableList<EmployeeEntity> listFromFile = read(temp); System.out.println("Lists equal? "+listFromFile.equals(staff)); } private static void write(ObservableList<EmployeeEntity> employees, Path file) { try {
source share