java 数据持久化_java模拟数据持久化

数据持久化可:把程序中的数据以某种形式保存到某存储介质中,以达到持久化的目的(把数据保存到硬盘或数据库中)

序列化(Serialization)也叫串行化,是java内置的持久化java对象机制,只要某个类实现了java.io.Serialization接口,就能够使用java.io.ObjectOutputStream将该类对象以二进制字节码的形式写到硬盘上,并能够使用java.io.ObjectInputStream将该对象从硬盘上还原。这样,即使重启电脑,该java对象也能从硬盘上恢复

模拟person对象数据持久化——保存到文件||数据库||其他(保存数据、查找数据)

Person.java

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

public class Person implements Serializable{

private static final long serialVersionUID = 1L;

private String name;//姓名

private List hobby = new ArrayList();//爱好

//生成所有属性getter和setter的方法

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public List getHobby() {

return hobby;

}

public void setHobby(List hobby) {

this.hobby = hobby;

}

//重写toString方法

@Override

public String toString() {

return "爱好:" + hobby + ", 姓名" + name;

}

}

Console.java

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.ObjectInput;

import java.io.ObjectInputStream;

import java.io.ObjectOutput;

import java.io.ObjectOutputStream;

import java.util.Arrays;

//导入自定义Person包

public class Console {

//当前文件夹,即当前项目的存放路径

public static File directory = new File(System.getProperty("user.dir"));

//控制台输入

public static String systemRead()throws IOException{

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

return reader.readLine();

}

//将person对象持久化到硬盘上,模拟以文件的形式存储数据

public static void persist(Person person) throws IOException{

File file = new File(directory,person.getName()+".txt");

ObjectOutput output = new ObjectOutputStream(new FileOutputStream(file));

//保存对象

output.writeObject(person);

output.close();

System.out.println("文件保存在:"+file);

}

//将person对象从硬盘上恢复,从该文件读出数据

public static Person load(String name) throws Exception{

File file = new File(directory,name+".txt");

if(!file.exists()){

return null;

}

ObjectInput ins = new ObjectInputStream(new FileInputStream(file));

//读取对象

return (Person)ins.readObject();

}

/**

* @param args

*/

public static void main(String[] args)throws Exception {

// TODO Auto-generated method stub

System.out.println("人员信息管理系统.");

System.out.println("1.输入'save'开始录入人员信息.");

System.out.println("2.输入'load'开始查询人员信息");

System.out.println("3.输入'exit'退出系统");

System.out.println("请输入(回车结束输入):");

//获取用户输入信息

String menu = systemRead();

//如果输入的为save,则继续输入人员的姓名、爱好

if("save".equalsIgnoreCase(menu)){

System.out.println("请输入要录入的人员姓名:");

//获取输入人员的姓名

String name = systemRead();

System.out.println("请输入'"+name+"'爱好,用','隔开:");

//获取输入人员的爱好

String hobbies = systemRead();

Person person = new Person();

person.setName(name);

person.setHobby(Arrays.asList(hobbies.split(",")));

//持久化人员对象

persist(person);

//如果输入的为load,则继续查找人员的姓名,然后根据姓名查询该人员的信息

}else if("load".equalsIgnoreCase(menu)){

System.out.println("请输入要查找的人员姓名:");

//获取输入人员的姓名

String name = systemRead();

//根据姓名查询人员,并返回人员相关信息

Person person = load(name);

if(person == null){

System.out.println("没有此人员信息");

}else{

System.out.println("查询结果"+person);

}

//如果输入的为exit,则退出程序

}else{

System.out.println("无效输入:"+menu);

System.out.println();

//继续执行main主函数

main(null);

}

}

}

你可能感兴趣的:(java,数据持久化)