在文件android中写/读数组

时间:2016-12-22 14:11:37

标签: java android

现在我有两个要保存在文件中的数组

int var[][] = new int var[6][3]
int var_2[][] = new int var[7][5];

那么将这个写入文件的最佳方法是什么?

我见过这样的例子

try {
  ObjectOutputStream objOut = new ObjectOutputStream(new
  FileOutputStream("data.dat"));
  objOut.writeObject(var_1);
  objOut.writeObject(var_2);
  objOut.close();
  }
catch (Exception e) {
e.printStackTrace();
}

我这样做对吗?如果我是,那我怎么读它变量?

1 个答案:

答案 0 :(得分:0)

你在概念上做得对,但还有改进的余地。首先,您应该使用Android日志工具(android.util.Log)而不是e.printStackTrace()。另外,如果你的minSdkLevel是19或更高,我建议你使用try-with-resources语句:

try (ObjectOutputStream objOut = new ObjectOutputStream(new
    FileOutputStream("data.dat")))
{
    objOut.writeObject(var_1);
    objOut.writeObject(var_2);
} catch (Exception e) {
    Log.e(LOG_TAG, "Could not save data", e);
}

LOG_TAG只是您定义的一些String,用于标识您班级的输出。)如果您不能使用try-with-resources,我建议使用{finally 1}}子句关闭流:

ObjectOutputStream objOut = null;
try {
    objOut = new ObjectOutputStream(new FileOutputStream("data.dat"))
    objOut.writeObject(var_1);
    objOut.writeObject(var_2);
} catch (Exception e) {
    Log.e(LOG_TAG, "Could not save data", e);
} finally {
    if (objOut != null) {
        try {
            objOut.close();
        } catch (Exception e) {
            Log.e(LOG_TAG, "Could not close output file", e);
        }
    }
}

这确保即使在writeObject的调用中抛出异常,输出流也会关闭。

要重新读取数据,只需打开ObjectInputStream到同一个文件,然后按照编写的相同顺序读取数据