我有一个程序,它将遍历并创建多个不同的类实例。我想使用DataOutputStream将每个实例的详细信息写入一个文件(这是一个必要的练习,稍后我将讨论其他方法),但问题是我注意到每次创建和写入新实例时,DataOutputStream都会覆盖该文件。我的第一个想法是,每次编写新实例时,首先使用DataInputStream获取文件中的内容,保存它,然后使用新实例重写它。这看起来很快就会让人困惑。对于这样的事情,最好的做法是什么?提前谢谢。
编辑:我会尝试更具体地说明我在这里要做的事情。当我获取想要写入文件的类时,首先我将使用dataInputStream。readFully获取文件中的所有内容。我的理解是,它将文件中的所有字节存储在一个数组中。我想比较这与类实例,如果实例匹配的东西已经在文件中,不要输出这个特定的实例(因为它已经在那里)的文件。
在打开文件进行写入时使用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,而不是重新发明轮子。你可能会节省很多时间。