0

我有一个程序将通过并创建多个不同的类实例。我想使用 DataOutputStream 将每个实例的详细信息写入文件(这是一个必要的练习,我稍后会看看其他方法),但问题是我注意到 DataOutputStream 每次新实例时都会覆盖文件创建和编写。我的第一个想法是每次编写新实例时,首先使用 DataInputStream 获取文件中的内容,保存它,然后用新实例重写它。这似乎很快就会变得混乱。对于这样的事情,最佳实践是什么?提前致谢。

编辑:我会尝试更具体地说明我在这里要做的事情。当我将要写入文件的课程上时,首先我将使用 dataInputStream.readFully 来获取文件中的所有内容。我的理解是获取文件中的所有字节并将它们存储在一个数组中。我想将此与类实例进行比较,如果该实例与文件中已有的内容匹配,则不要将此特定实例(因为它已经存在)输出到文件中。否则,追加到文件中。

4

1 回答 1

0

打开文件进行写入时,使用FileOutputStream(File file, boolean append)构造函数。例如:

File f = new File("C:\data.txt");
FileOutputStream fos = new FileOutputStream(f, true); // open file for appending
DataOutputStream dos = new DataOutputStream(fos);
// anything written to dos after this point will be appended

如果您只需要序列化您的对象,我强烈建议您使用 JAXB 或其他序列化/编组 API,而不是重新发明轮子。您可能会节省大量时间。

于 2013-05-01T21:50:52.723 回答