使用DataOutput / InputStream管理文件字节

时间:2013-05-01 21:47:39

标签: java datainputstream dataoutputstream

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

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

1 个答案:

答案 0 :(得分: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,而不是重新发明轮子。你可以节省大量的时间。

相关问题