我需要将存储在数组中的数据传输到一个文件,在这种情况下我创建的文件为emplo.dat。我找不到正确的方法来做到这一点。使用readObject传输对象不起作用,因为它是一个对象数组。
import java.io.*;
import employee.*;
public class ClearTechSolutions {
public static void main(String[] args) {
ContractEmployee[] con = new ContractEmployee[3];
PermanentEmployee[] per = new PermanentEmployee[3];
for(int i=0;i<3;i++) {
con[i] = new ContractEmployee();
per[i] = new PermanentEmployee();
}
con[0].setData( "C001", "Mohan", "E-32 M.G Marg", "30/Jun/1974", 0.0f, 1000.0f, 0.0f, 5000.0f, 20, 7);
con[1].setData( "C002", "Steve", "A-32 M.G. Marg", "15/Oct/1981", 0.0f, 1500.0f, 0.0f, 7500.0f, 22, 3);
con[2].setData( "C003", "Mary", "A-31 Rohini", "15/Dec/1979", 0.0f, 2500.0f, 0.0f, 10000.0f, 18, 5);
per[0].setData( "E001", "Bob", "E-12 Lajpat Nagar", "01/Feb/1974", 0.0f, 20000.0f, 0.0f, 800000.0f, 7, 28);
per[1].setData( "E002", "Kevin", "E-15 Mandir Marg", "01/Apr/1990", 0.0f, 25000.0f, 0.0f, 1000000.0f, 6, 26);
per[2].setData( "E003", "Mohan", "E-15 Mandir marg", "31/July/1984",0.0f, 10000.0f, 0.0f, 400000.0f,9,30);
con[0].calc(1000.0f);
con[1].calc(1500.0f);
con[2].calc(2500.0f);
per[0].calc(20000.0f);
per[1].calc(25000.0f);
per[2].calc(10000.0f);
try {
File file = new File("emplo.dat");
file.createNewFile();
FileOutputStream fi = new FileOutputStream(file);
ObjectOutputStream obj = new ObjectOutputStream(fi);
for(int i=0;i<3;i++) {
System.out.println("\n");
System.out.println("The details for Contract Employee "+(i+1)+" are:");
con[i].print();
}
for(int i=0;i<3;i++) {
System.out.println("\n");
System.out.println("The details for Permanent Employee "+(i+1)+" are:");
per[i].print();
}
}
catch(IOException e) {}
}
}
答案 0 :(得分:1)
正如ethrbunny所建议的那样,您应该了解有关序列化的更多信息。
对于有问题的问题,你应该
obj.writeObject(con)
或
obj.writeObject(per)
写入数组中保存的require数据
进入文件。请注意,您已将一个对象数组写入该文件,而不是逐个编写单个对象。所以期望在反序列化时也能获得一系列对象。
答案 1 :(得分:1)
import java.io.*;
import employee.*;
public class ClearTechSolutions {
public static void main(String[] args) {
ContractEmployee[] con = new ContractEmployee[3];
PermanentEmployee[] per = new PermanentEmployee[3];
for(int i=0;i<3;i++) {
con[i] = new ContractEmployee();
per[i] = new PermanentEmployee();
}
con[0].setData( "C001", "Mohan", "E-32 M.G Marg", "30/Jun/1974", 0.0f, 1000.0f, 0.0f, 5000.0f, 20, 7);
con[1].setData( "C002", "Steve", "A-32 M.G. Marg", "15/Oct/1981", 0.0f, 1500.0f, 0.0f, 7500.0f, 22, 3);
con[2].setData( "C003", "Mary", "A-31 Rohini", "15/Dec/1979", 0.0f, 2500.0f, 0.0f, 10000.0f, 18, 5);
per[0].setData( "E001", "Bob", "E-12 Lajpat Nagar", "01/Feb/1974", 0.0f, 20000.0f, 0.0f, 800000.0f, 7, 28);
per[1].setData( "E002", "Kevin", "E-15 Mandir Marg", "01/Apr/1990", 0.0f, 25000.0f, 0.0f, 1000000.0f, 6, 26);
per[2].setData( "E003", "Mohan", "E-15 Mandir marg", "31/July/1984",0.0f, 10000.0f, 0.0f, 400000.0f,9,30);
con[0].calc(1000.0f);
con[1].calc(1500.0f);
con[2].calc(2500.0f);
per[0].calc(20000.0f);
per[1].calc(25000.0f);
per[2].calc(10000.0f);
try {
File file = new File("emplo.dat");
file.createNewFile();
FileOutputStream fi = new FileOutputStream(file);
ObjectOutputStream obj = new ObjectOutputStream(fi);
for(int i=0;i<3;i++) {
System.out.println("\n");
System.out.println("The details for Contract Employee "+(i+1)+" are:");
con[i].print();
obj.writeObject(con[i]); <-- this will write your object to file connected to file output stream.
}
for(int i=0;i<3;i++) {
System.out.println("\n");
System.out.println("The details for Permanent Employee "+(i+1)+" are:");
per[i].print();
obj.writeObj(per[i]);
}
}
catch(IOException e) {}
}
}
从文件中读取
ObjectInputStream ois=new ObjectInputStream(fin);
abc temp;
while((temp=(abc)ois.readObject()))
{
System.out.println(temp);
}
这里abc是要检索其对象的类名。文件输入流对象中的文件。