将序列化对象作为流读取

时间:2016-06-30 22:35:33

标签: java serialization

我已经用这种方式序列化了一个巨大的链表(150mb):

public void serialize(ArrayList<LinkedList> e, String file){    
try {
        FileOutputStream fileOut =
                new FileOutputStream("file+".ser");
        ObjectOutputStream out = new ObjectOutputStream(fileOut);
        out.writeObject(e);
        out.close();
        fileOut.close();

    }catch(IOException i)
    {
        i.printStackTrace();
    }
}

现在,我想以非阻塞方式将其作为流读取,与以下方法相反:

public ArrayList deserialize(File file){
    ArrayList<LinkedList> e = null;
    try
    {
        FileInputStream fileIn = new FileInputStream(file);
        ObjectInputStream in = new ObjectInputStream(fileIn);
        e = (ArrayList<LinkedList>) in.readObject();
        in.close();
        fileIn.close();
        return e;
    }catch(IOException i)
    {
        i.printStackTrace();
        return null;
    }catch(ClassNotFoundException c)
    {
        System.out.println("Object not found");
        c.printStackTrace();
        return null;
    }
}

在反序列化过程仍在运行但尚未完成的情况下,是否可以使用部分反序列化数据?

1 个答案:

答案 0 :(得分:2)

你做不到。没有来自文件的非阻塞I / O这样的东西。你的问题没有意义。