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