1

所以我正在创建一个程序来跟踪我观看的电视节目和电影。我有 2 个课程(电视和电影),我有一个可以容纳所有人的数组。我将如何保存这个数组,以便每次我使用该程序时,它都可以让我编辑同一个列表,因为每次我观看新剧集时,我都想用新信息更新我的数组。所以基本上我需要使用什么程序来不仅保存一个 arrya,而且每次运行程序时都加载数组?

4

3 回答 3

3

为了保存数组以供进一步参考,您需要使类可序列化(例如,通过实现Serializable)。这意味着可以将对象转换为可以保存到文件或通过网络发送的字节序列,以后可以使用该字节序列在内存中重新创建对象

然后您可以执行此操作以将数据保存到文件中:

ObjectOutputStream out = new ObjectOutputStream(
    new FileOutputStream("myarray.ser")
);
out.writeObject(myArray);
out.flush();
out.close();

你可以像这样读回来:

ObjectInputStream in = new ObjectInputStream(new FileInputStream("myarray.ser"));
MyType[] array = (MyType[]) in.readObject();
in.close();
于 2012-07-26T02:21:12.833 回答
1

虽然您可以序列化您的对象并将其写入磁盘...我猜您只需将数组输出到文件并将其读回会更容易。您可以将数组中的每个元素写入文件相当容易地循环,并同样容易地读回它。就像其他人说的那样,花时间研究 ArrayList 或类似的结构是值得的!例子:

要写入文件:

ArrayList<String> list = new ArrayList<String>();

// add stuff the the ArrayList

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("data.txt")));

for( int x = 0; x < list.size(); x++)
{
out.println(list.get(x));
}

out.close()

从文件中读取:

ArrayList<String> list = new ArrayList<String>();

Scanner scan = new Scanner(new File("data.txt"));

while(scan.hasNext())
{
list.add(scan.next());
}
于 2012-07-26T02:38:18.280 回答
0

首先,您应该避免使用像瘟疫这样的数组......Collections改为使用,除了其他任何东西之外,它会根据需要自动扩展大小(您将需要这个)。

无论您使用数组还是 a List,您都可以通过将对象写入ObjectOutputStream包装 a来将对象序列化到磁盘FileOutputStream

请注意,数组/列表中的对象必须实现Serializable所有类字段也必须实现。

要重新读取数组/列表,请从ObjectInputStream包装 a中读取FileInputStream

您可以在 Google 上搜索此类代码的无数示例。

于 2012-07-26T02:18:58.227 回答