【问题标题】:How to append objects on a file in Java?如何在Java中的文件上附加对象?
【发布时间】:2020-07-08 09:06:10
【问题描述】:

我正在尝试用Java 制作一个小程序,我需要在其中保存一个文件中的对象数组。我一直在寻找如何做到这一点,我找到了下一个代码:

    //this is the array that will be stored
    private Atributtes list[]=new Atributtes [100];

    /*
    this is the way i save the data in the array,i always save them in
    index 0,and i made a for to put away the previous data because always
    there will have data in index 0
    */

    for (int i = totalElments; i>0; i--){
    list[i] = list[i-1];        
    }

    list[0]=new Atributtes ("Atributtes data");
    save.storeInfile(list);
    totalElments++;





private static final String filename="file.obj";

public void storeInfile(Object array[]){
    try{
        FileOutputStream file= new FileOutputStream(filename,true);
        ObjectOutputStream object= new ObjectOutputStream(file);
        object.writeObject(array);
        object.close();
        file.close();
        System.out.println("recording successfully");
        System.out.println("-----------------------------------");
    }catch(Exception exceccao){
        System.out.println("recording wasn't successfull");
    }
}

我现在的问题是,当我想保存相同的对象数组但使用另一个数据时,或者当我重新打开文件时,文件中的第一个数据被覆盖。

注意 1:据说我将真正的布尔值放在 FileoutPutSTream 上,但是当我把它放入时,录制不再发生,但是当我删除真正的布尔值时,录制会发生,但总是会覆盖数据。

注意 2:我已经阅读过 FileWriter 和 PrintWriter,但我只需要编写对象,而不是字符串。谢谢!!!!

有人能告诉我如何在文件中附加这些新数据吗?

谢谢。

【问题讨论】:

    标签: java arrays file object append


    【解决方案1】:

    改变这一行

    FileOutputStream file= new FileOutputStream(filename);
    

    到这里

    FileOutputStream file= new FileOutputStream(filename, true) 
    

    true 代表附加启用或禁用。默认情况下它是禁用的。

    【讨论】:

    • 嗨,Isuru Dilshan,我已经按照你的建议做了,但现在没有录制,只有当我删除 true 时才会发生。
    • 写入后尝试刷新。 object.flush();
    • @IsuruDilshan close() 致电flush()
    • @RALPHBURAIMO 我使用String 而不是Attributes 运行您的代码。每次我运行它时,它都会在文件中附加一个“属性数据”。我知道这一点,因为我在每次运行后打开文件并手动计算它们。如果您没有看到相同的结果,则您的for-loop 可能有问题,您在其中执行此操作list[i] = list[i-1];。也许您应该将您的代码置于 DEBUG 模式以弄清楚您的代码在做什么。
    猜你喜欢
    • 2015-10-15
    • 2018-02-26
    • 1970-01-01
    • 2011-02-13
    • 2021-06-18
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多