Comment enregistrer une ArrayList dans un fichier? Qu'est-ce que je fais wro ng?Comment puis-je enregistrer une ArrayList <MyObject> dans un fichier?
J'ai utilisé cette question de manière à me aider avec des objets Serializable .:
how to serialize ArrayList on android
et moi cette question SO sur la façon d'écrire une liste de tableau:
Java - How Can I Write My ArrayList to a file, and Read (load) that file to the original ArrayList?
Cependant quand j'essaye d'écrire le dans le dossier j'obtiens l'erreur:
java.io.NotSerializableException: at
java.io.ObjectOutputStream.writeObject at
com.mycompany.MyClass.saveData
Voici MyClass qui tente d'enregistrer le fichier
private ArrayList <MyCustomObject> arrayList;
private File dataFile;
private String FILE_NAME = "FILE_DATA.dat";
public void init(final Context context) {
this.appContext = context;
dataFile = new File(appContext.getFilesDir(), FILE_NAME);
if (dataFile.exists()) {
loadData();
} else {
try {
dataFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
arrayList = new ArrayList <MyCustomObject>();
saveData();
}
}
private void saveData() {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(dataFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fos != null) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(fos);
if (oos != null) {
oos.writeObject(arrayList);
}
assert oos != null;
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private void loadData() {
FileInputStream fis = null;
try {
fis = new FileInputStream(dataFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fis != null) {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(fis);
if (ois != null) {
try {
arrayList = (ArrayList <MyCustomObject>) ois.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} else {
}
assert ois != null;
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
est ici MyCustomObject
public class MyCustomObject implements Serializable {
public String myname = "";
public String someOtherItem = "";
public int aNumber = 0;
public MyCustomObject getCustomObject() {
return this;
}
}
Qu'est-ce que vous essayez de serialise - la variable membre 'arrayList' d'une instance de 'MyClass', ou l'instance de' MyClass' elle-même? – clownba0t
Je suppose que je devrais sérialiser mon ArrayList puisque c'est ce qui doit être sauvé. –
En effet - 'MyClass' semble avoir un membre' Context' (voir 'this.appContext' dans la méthode' init') qui n'est certainement pas sérialisable _not_! – clownba0t