如何编写ArrayList文件并检索它?

时间:2012-08-28 11:39:12

标签: android

现在我试图使用这个

FileOutputStream fos = getContext().openFileOutput("CalEvents", Context.MODE_PRIVATE);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(returnlist);
    oos.close();

为了将“returnlist”保存为文件“CalEvents”,这是一个ArrayList 现在我的问题是,这是正确的方法吗? 以及如何找回列表?

提前致谢

2 个答案:

答案 0 :(得分:6)

这是你想要做的吗?

FileInputStream fis;
try {
    fis = openFileInput("CalEvents");
    ObjectInputStream ois = new ObjectInputStream(fis);
    ArrayList<Object> returnlist = (ArrayList<Object>) ois.readObject();
    ois.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

编辑:可以简化:

FileInputStream fis;
try {
    fis = openFileInput("CalEvents");
    ObjectInputStream ois = new ObjectInputStream(fis);
    ArrayList<Object> returnlist = (ArrayList<Object>) ois.readObject();
    ois.close();
} catch (Exception e) {
    e.printStackTrace();
}

假设您所在的班级Context(如Activity)。如果没有,那么您必须在扩展openFileInput()的对象上调用Context方法。

答案 1 :(得分:1)

使用此方法将Arraylist写入文件

public static void write(Context context, Object nameOfClass) {
    File directory = new File(context.getFilesDir().getAbsolutePath()
            + File.separator + "serlization");
    if (!directory.exists()) {
        directory.mkdirs();
    }

    String filename = "MessgeScreenList.srl";
    ObjectOutput out = null;

    try {
        out = new ObjectOutputStream(new FileOutputStream(directory
                + File.separator + filename));
        out.writeObject(nameOfClass);
        out.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Complete example here, with Read method