8

现在我试图用这个

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

为了将作为 ArrayList 的“returnlist”保存到文件“CalEvents”中,现在我的问题是,这是正确的方法吗?以及如何检索列表?

提前致谢

4

2 回答 2

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

于 2012-08-28T11:45:06.430 回答
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();
    }
}

此处的完整示例,带有 Read 方法

于 2015-03-26T06:44:10.347 回答