现在我有两个要保存在文件中的数组
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();
}
我这样做对吗?如果我是,那我怎么读它变量?
答案 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
到同一个文件,然后按照编写的相同顺序读取数据。