使用对象流往文件里添加数据,然后进行读取,只能读取出来第一次添加的数据,之后添加的数据不显示
-
public void Output(){
Scanner scanner=new Scanner(System.in);
ObjectOutputStream oos=null;
List list=new ArrayList(20);
int len=1;
try {
oos=new ObjectOutputStream(new FileOutputStream("person.txt",true));
while(len!=-1){
System.out.print("姓名:");
String name=scanner.next();
System.out.print("年龄:");
int age=scanner.nextInt();
System.out.print("金钱:");
double balance=scanner.nextDouble();
list.add(new person(name,age,new Account1(balance)));
System.out.print("如果不需要继续添加请输入-1");
len=scanner.nextInt();
}
oos.writeObject(list);
oos.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
finally {
try {
if(oos!=null){
oos.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
public void Input(){
Scanner scanner=new Scanner(System.in);
ObjectInputStream oos=null;
int len=1;
try {
oos=new ObjectInputStream(new FileInputStream("person.txt"));
List list=(ArrayList)oos.readObject();
Iterator iterator=list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} finally {
try {
if(oos!=null){
oos.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
自带的person类,如下,不需要做修改
public class person implements Serializable {
static final long serialVersionUID=-12321445678l;
String name;
int age;
private Account1 act;
public person(String name, int age, Account1 act) {
this.name = name;
this.age = age;
this.act = act;
}
public person(String name, int age) {
this.name = name;
this.age = age;
}
public person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "person{" +
"name='" + name + '\'' +
", age=" + age +
", act=" + act +
'}';
}
}
class Account1 implements Serializable{
static final long serialVersionUID=-12321445671l;
private double balance;
public Account1(double balance) {
this.balance = balance;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
@Override
public String toString() {
return "Account{" +
"balance=" + balance +
'}';
}
}
如果进行读取,只能出现第一次添加的数据,再运行添加数据,则不做显示
希望能帮忙修改一下,并说一下,为什么会出现这种情况