Java 将重复对象数据写入二进制文件

Java 将重复对象数据写入二进制文件,java,Java,我会尽量让它简单。我有一个向表中添加值的程序。单击按钮时,它从表中读取值,创建对象并写入二进制文件(.ser) 当我在表的列表中循环(例如,如果我向表中添加了三个对象值,则循环3次),然后我创建一个对象并将其写入文件。但当我读取同一个文件时,它只读取同一个对象(如果我向表中添加了3个对象,则读取3次)。它为什么这样做?我是Java新手任何帮助都会很好谢谢 对象结构 public class Empleados implements Serializable { public int NoEmp

我会尽量让它简单。我有一个向表中添加值的程序。单击按钮时,它从表中读取值,创建对象并写入二进制文件(.ser)

当我在表的列表中循环(例如,如果我向表中添加了三个对象值,则循环3次),然后我创建一个对象并将其写入文件。但当我读取同一个文件时,它只读取同一个对象(如果我向表中添加了3个对象,则读取3次)。它为什么这样做?我是Java新手任何帮助都会很好谢谢

对象结构

public class Empleados implements Serializable {

public int NoEmpleado;
public String ENombre;
public String EApellido;
public String EGrupo;
.
.
Setters and getters 
} 
当我单击一个按钮写入二进制文件(从以前填充了数据的表中获取数据)时,将运行以下代码。我也关闭文件后,所有这一切都完成了

            try // open file
            {
                outputS = new ObjectOutputStream(new FileOutputStream( "empleados.ser" ) );
            } // end try
            catch ( IOException ioException )
            {
                System.err.println( "Error opening file." );
            } // end catch

            for (int num = 0; num < tableModel2.getRowCount();num++)
            {                                   
                try
                {

                empleado1.setNumero(Integer.parseInt(tableModel2.getValueAt(num, 0).toString()));
                empleado1.setNombre(tableModel2.getValueAt(num, 1).toString());
                empleado1.setApellido(tableModel2.getValueAt(num, 2).toString());
                empleado1.setGrupo(tableModel2.getValueAt(num, 3).toString());

                int n = empleado1.getNumero();

                if (empleado1.getNumero() > 0)
                {                       
                    outputS.writeObject(empleado1);                                                 
                }
                else
                {
                    System.out.println("Numero debe ser mayor a 0.");
                }
                }
                .    
                .
                fallow by rest of catch stataments  
尝试//打开文件
{
输出=新的ObjectOutputStream(新的FileOutputStream(“empleados.ser”);
}//结束尝试
捕获(IOException IOException)
{
System.err.println(“打开文件时出错”);
}//端盖
for(int num=0;num0)
{                       
outputS.writeObject(empleado1);
}
其他的
{
System.out.println(“市长编号a 0”);
}
}
.    
.
由剩余的渔获物休耕

请同时发布阅读代码。乍一看,编写代码似乎不错。为什么不在循环中创建一个新的对象实例?@JPMoresmau非常好的建议!写入文件时没有重复!你的意思是所有三个Emplicato都是序列化的,但反序列化时只有一个?@Garry At反序列化的时候,我三次得到了第一个EmplbeadOS对象。但是正如JPMoresmau所建议的,我将EmplbeadOS的实例移到了For循环中,现在它的工作方式也和它假设的一样!