ObjectInputStream对ArrayList对象存储(用户注册)

想了一天,晚上又整了两个小时,马上就要放弃了,想来又觉着一天的努力可惜了。出去理清了下思路,回来看了下代码,只是把应该把FileInputStream("str",true),写成false

就可以成功了。看来,不论成功大小,都不是那么的遥不可及,有时也就是那么坚持一小下。

package com.jereh.demo.model;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Entity implements Serializable{
	private String username ;
	private String password ;
	int age ;
	Date date ;
	public Entity(){}
	public Entity(String username,String password,int age)
	{
		this.username=username;
		this.password=password;
		this.age=age;
	}
	public int getAge() {
		return age;
	}
	public Date getDate() {
		return date;
	}
	public String getPassword() {
		return password;
	}
	public String getUsername() {
		return username;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void setDate(String dateStr) {
		this.date = this.toDate(dateStr);
	}
	public void setDate(Date dateStr) {
		this.date = dateStr;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	/**
	 * 实现对用户输入的注册日期字符串进行转换
	 * @param str
	 * @return
	 */
	private Date toDate(String str)
	{
		DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
		try {
			this.date = sdf.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return this.date;
		
	}

}


package com.jereh.demo.model;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class EntityService {
	Entity user =null;
	List<Entity> users = new ArrayList<Entity>();
	public EntityService(){
		//this.user = new Entity("zhang","zhang",12) ;
		this.user = new Entity();
	}
	public List<Entity> getUser() {
		// users.add(user);
		 return users;
	}
	public void setUser(Entity user) {
		this.user = user;
	}
	/**
	 * 返回一个字符串
	 * @return
	 */
	private String getStringInfo()
	{
		Scanner scan = new Scanner(System.in) ;
		return scan.next(); // 返回一个字符串
	}
	private int getInt()
	{
		Scanner scan = new Scanner(System.in) ;
		return scan.nextInt();
	}
	
	public void getUserName()
	{
		System.out.print("请输入用户名:");
		String str = this.getStringInfo();
		user.setUsername(str) ;
	}
	private void getPassword()
	{
		System.out.print("请输入密码:");
		user.setPassword(this.getStringInfo());
	}
	private void getAge() 
	{
		System.out.print("请输入年龄:") ;
		user.setAge(this.getInt());
	}
	private void getRegDate()
	{
		//System.out.print("请输入注册日期:");
		Date date = new Date() ;
		System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date)) ;
		user.setDate(date);
	}
	
	public void serivce()
	{
		getUserName();
		getPassword();
		getAge();
		getRegDate();
		this.registerInfo();
		this.getRegisterInfo();
	}
	 private void registerInfo()
	 {
		 ObjectOutput is = null ;
		 ObjectInput oi = null;
		// 
		 File file = new File("d:\\Reg.txt") ;
		 try {
			 if(file.length()==0)
			 {
			  this.users.add(this.user);
			  System.out.println("*888888") ;
			 is = new ObjectOutputStream(new FileOutputStream(file,true)) ;
			 is.writeObject(this.users);
			 }else
			 {
				 oi = new ObjectInputStream(new FileInputStream(file)) ;
				 ArrayList<Entity> users = null ;
				 Object obj = null ;
				 try {
					 obj = oi.readObject();		
					 users = (ArrayList)obj;
					 users.add(this.user);
					 is = new ObjectOutputStream(new FileOutputStream(file,false)) ;
					 is.writeObject(users);// 重新写入
				} catch (ClassNotFoundException e) {
					e.printStackTrace();
				}
			 }			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally
		{
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	 }
	 private void getRegisterInfo()
	 {
		 ObjectInput oi =null; 
		 try {
			oi = new ObjectInputStream(new FileInputStream("d:\\Reg.txt")) ;
			List<Entity> users = null;
			users=(ArrayList<Entity>)(oi.readObject());
			System.out.println(users.size()) ;
			for(Entity oneUser:users)
			{
			 System.out.println("用户名: "+oneUser.getUsername()+"\n"+"用户密码:"+oneUser.getPassword()+"\n"+"年龄:"+oneUser.getAge()+"\n"+"注册日期:"+new SimpleDateFormat("yyyy-MM-dd").format(oneUser.getDate())+"\n") ;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}finally
		{
			try {
				oi.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		 
	 }

}


package com.jereh.demo.model;

public class TestRegister {
	 EntityService es = new EntityService();
	public static void main(String args[])
	{
		new TestRegister().getReg();
	}
	private void getReg()
	{
		es.serivce();
	}

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值