ObjectInputStream流 持久化
vo类:
package javabean;
import java.io.Serializable;
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private static int count=1;
private int id;
private String name;
private int classid;
public Student(){
id=count;
count++;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getClassid() {
return classid;
}
public void setClassid(int classid) {
this.classid = classid;
}
public String toString(){
return name;
}
public boolean equals(Object obj){
if(obj instanceof Student){
Student stu=(Student)obj;
if(this.id==stu.id){
return true;
}
}
return false;
}
}
执行类
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import javabean.Student;
public class DataSave {
public static void main(String[] args){
List<Student> list=getData();
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
private static File getFile(){
File file=new File("src\\file\\datasave.txt");
return file;
}
//获取文档数据
private static List<Student> getData(){
File file=getFile();
List<Student> list=null;
FileInputStream fis=null;
ObjectInputStream ois=null;
try {
fis=new FileInputStream(file);
if(fis.available()!=0){
ois=new ObjectInputStream(fis);
Object obj=ois.readObject();
list=(ArrayList<Student>)obj;
System.out.println(list.get(1));
}
else
{
list=new ArrayList<Student>();
}
}catch(Exception e){
e.printStackTrace();
}finally{
fis=null;
ois=null;
}
return list;
}
//更改数据
private static void setData(List<Student> list){
File file=getFile();
FileOutputStream fos=null;
ObjectOutputStream oos=null;
try{
fos=new FileOutputStream(file);
oos=new ObjectOutputStream(fos);
oos.writeObject(list);
oos.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
oos=null;
fos=null;
}
}
//插入数据
public static void insert(Student stu){
List<Student> list=getData();
list.add(stu);
setData(list);
}
//修改数据
public static void update(int i,Student stu){
List<Student> list=getData();
list.remove(i);
list.add(i, stu);
setData(list);
}
//删除数据
public static void delete(int i){
List<Student> list=getData();
list.remove(i);
setData(list);
}
public static void close(InputStream stream){
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}