我有这个可序列化的类,我用它在二进制文件中存储字符串的 ArrayList。
public class SaveState implements Serializable{
public static ArrayList <String> favoriteBusStopNumbers = new ArrayList<String>();
public static SaveState instance=new SaveState();
}
一旦这个数组充满了我必须存储的数据,我就使用这种方法来存储带有字符串数组列表的实例:
public static void saveData(){
ObjectOutput out;
try {
//primero comprobamos si existe el directorio, y si no, lo creamos.
File folder = new File(Environment.getExternalStorageDirectory() + DIRECTORY_NAME);
if(!folder.exists())
folder.mkdirs();
File outFile = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME+"appSaveState.data");
out = new ObjectOutputStream(new FileOutputStream(outFile));
out.writeObject(SaveState.instance);
out.close();
} catch (Exception e) {e.printStackTrace();}
}
最后,我在我的应用程序的初始化中使用此方法来加载文件并用以前存储的数据填充我的 SaveState.instance 变量:
public static void loadData(){
ObjectInput in;
try {
File inFile = new File(Environment.getExternalStorageDirectory(), DIRECTORY_NAME+"appSaveState.data");
in = new ObjectInputStream(new FileInputStream(inFile));
SaveState.instance=(SaveState) in.readObject();
in.close();
} catch (Exception e) {e.printStackTrace();}
}
当我保存数据时,正在使用数据对象填充正确创建文件,我知道这是因为文件有超过 0KB 的磁盘空间。但是这里出了点问题,因为当我启动我的应用程序并加载数据时,我的 SaveState.instance 变量得到一个空的 ArrayList 字符串......然后¿代码有什么问题?
谢谢