我最近阅读了数千个关于 android 文件序列化的主题,但我仍然没有找到有效的解决方案。
我有我的可序列化类和活动,我分别在其中序列化和反序列ArrayList
化可序列化的类元素。 onResume()
onPause()
我的解决方案仍然在 seriazlie 和反序列化方法中抛出 IOException 。
package classes;
import java.io.Serializable;
import java.util.Date;
import com.google.android.maps.GeoPoint;
public class Note implements Serializable {
public Note() {
}
public Note(Date date, String name, GeoPoint geoPoint) {
this.date = date;
this.name = name;
this.geoPoint = geoPoint;
}
private static final long serialVersionUID = -7789719052842264659L;
private Date date;
private String name;
private GeoPoint geoPoint;
public Date getDate() {
return date;
}
public String getName() {
return name;
}
public GeoPoint getGeoPoint() {
return geoPoint;
}
@Override
public String toString() {
return String.format("Name: %S%nDate: %2$td-%2$tb-%2$tY%nTime: %2$tH:%2$tM:%2$tS", name, date);
}
}
这是我的方法:
private void serializeQuotes() {
try {
FileOutputStream fos = openFileOutput("test.txt", Context.MODE_WORLD_READABLE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(notes);
oos.close();
}
catch (IOException e) {
Toast.makeText(this, "Serialization error", Toast.LENGTH_SHORT).show();
}
}
@SuppressWarnings("unchecked")
private void deserializeQuotes() {
try {
FileInputStream fis = openFileInput("test.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
notes = (ArrayList<Note>) ois.readObject();
ois.close();
}
catch (IOException e) {
Toast.makeText(this, "Deserialization error", Toast.LENGTH_SHORT).show();
}
catch (ClassNotFoundException e) {
}
}
notes
在哪里
ArrayList<Note>
我需要在 AppFolder 中创建文件:
File savedLocationsDirectory = new File(Environment.getExternalStorageDirectory().getPath().concat("/AppFolder"));
if (!savedLocationsDirectory.exists()) savedLocationsDirectory.mkdirs();
savedLocationsFile = new File(savedLocationsDirectory, "savedLocations.gc");
然后我使用:FileInputStream fis = new FileInputStream(savedLocationsFile);
和FileOutputStream fos = new FileOutputStream(savedLocationsFile, true);
在这两种情况下,序列化都不起作用。