自己写了一个链表,
node1-->node2->node3-->node4-...
想保存到文件,然后读回来
有什么办法?
如果保存对象的ObjectOutstream是不是保存node1就行了?

解决方案 »

  1.   

    ObjectOutstream
    ObjectInputstream
    不过需要序列化
      

  2.   

    对象node1有指向node2的handle,保存node1后node2会不会一起保存????
      

  3.   

    如果这个链表是自定义的类型就要实现Serializable接口。
      

  4.   

    /**
     * 
     */
    package cn.com.sandpay.report.util;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.util.ArrayList;/**
     *  对象读写工具类
     *
     * @author zhuwei
     * @since 2007-3-19 10:09:53
     */
    public class ObjectUtil {

    /**
     * 读取对象方法
     * @param filePath 文件路径
     * @param needDelete 是否需要删除
     * @return
     * @throws Exception 
     */
    public static Object read(String filePath,boolean needDelete) throws Exception{
    ObjectInputStream ois=new ObjectInputStream(new FileInputStream(filePath));
    Object obj=ois.readObject();
    ois.close();
    if(needDelete)(new File(filePath)).delete();
    return obj;
    }

    /**
     * 写对象
     * @param filePath 文件路径
     * @param obj 需要存储的对象
     * @throws Exception 
     */
    public static void write(String filePath,Object obj) throws Exception{
    File f=new File(filePath);
    if(!(f.getParentFile().exists()))f.getParentFile().mkdirs();
    ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream(f));
    os.writeObject(obj);
    os.close();
    }
    /**
     * 测试方法
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
    //文件路径
    String filePath="d:/aaa.obj";
    //存储的数据
    String data0="测试";
    ArrayList data1=new ArrayList();
    data1.add("数据1");
    data1.add("数据2");
    ArrayList data2=new ArrayList();
    data2.add(data1);
    data2.add(data1);
    //写对象:如果需要存储多个数据,则用Object[]包装
    ObjectUtil.write(filePath,new Object[]{data0,data2}); 
    //读取对象
    Object[] tobj=(Object[])ObjectUtil.read(filePath,false);
    System.out.println("0-> "+tobj[0]);
    System.out.println("1-> "+tobj[1]); }}
      

  5.   

    实现Serializable接口,然后用ObjectOutstream进行文件的写入