http://www.verejava.com/?id=16994748096921
package com.database; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.Iterator; public class TestDatabase { public static void testAdd() { try { DatabaseStore ds=DatabaseStore.openDatabase("test.db"); ByteArrayOutputStream baos=new ByteArrayOutputStream(); DataOutputStream dos=new DataOutputStream(baos); dos.writeInt(30); dos.writeBoolean(true); dos.writeDouble(100.5); dos.writeUTF("李军"); ds.addRecord(baos.toByteArray()); } catch (IOException e) { e.printStackTrace(); } } public static void testUpdate() { try { DatabaseStore ds=DatabaseStore.openDatabase("test.db"); ByteArrayOutputStream baos=new ByteArrayOutputStream(); DataOutputStream dos=new DataOutputStream(baos); dos.writeInt(30); dos.writeBoolean(true); dos.writeDouble(200.5); dos.writeUTF("张山"); ds.setRecord(2, baos.toByteArray()); } catch (IOException e) { e.printStackTrace(); } } public static void testDelete() { DatabaseStore ds=DatabaseStore.openDatabase("test.db"); ds.deleteRecord(3); } public static void testGet() { DatabaseStore ds=DatabaseStore.openDatabase("test.db"); Iterator<Record> iter=ds.getRecords(); try { while(iter.hasNext()) { Record record=iter.next(); ByteArrayInputStream bais=new ByteArrayInputStream(record.getData()); DataInputStream dis=new DataInputStream(bais); System.out.println(record.getId()+","+dis.readInt()+","+dis.readBoolean()+","+dis.readDouble()+","+dis.readUTF()); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { testDelete(); testGet(); } } package com.database; import java.io.Serializable; public class Record implements Serializable { private int id; private byte[] data; public Record(int id, byte[] data) { super(); this.id = id; this.data = data; } public int getId() { return id; } public void setId(int id) { this.id = id; } public byte[] getData() { return data; } public void setData(byte[] data) { this.data = data; } } package com.database; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class DatabaseStore implements Serializable { private static String databasePath; private static DatabaseStore ds=null; private int id;//自动增长的 id private List<Record> recordList; private DatabaseStore() { recordList=new ArrayList<Record>(); } public static DatabaseStore openDatabase(String databaseName) { databasePath=System.getProperty("user.dir")+"/"+databaseName; File file=new File(databasePath); if(!file.exists()) { ds=new DatabaseStore(); writeObject(); } ds=readObject(); return ds; } public boolean addRecord(byte[] data) { ds.id++; ds.recordList.add(new Record(ds.id, data)); return writeObject(); } public boolean setRecord(int id,byte[] data) { for(int i=0;i<ds.recordList.size();i++) { Record record=ds.recordList.get(i); if(record.getId()==id) { record.setData(data); return writeObject(); } } return false; } public Iterator<Record> getRecords() { return ds.recordList.iterator(); } public boolean deleteRecord(int id) { for(int i=0;i<ds.recordList.size();i++) { Record record=ds.recordList.get(i); if(record.getId()==id) { ds.recordList.remove(i); return writeObject(); } } return false; } public static boolean writeObject() { ObjectOutputStream oos=null; try { oos=new ObjectOutputStream(new FileOutputStream(new File(databasePath))); oos.writeObject(ds); oos.flush(); return true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } return false; } public static DatabaseStore readObject() { ObjectInputStream ois=null; try { ois=new ObjectInputStream(new FileInputStream(new File(databasePath))); ds=(DatabaseStore)ois.readObject(); return ds; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { ois.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }
http://www.verejava.com/?id=16994748096921