如何反序列化我创建的2个对象?

时间:2012-05-16 15:46:48

标签: java serialization arraylist inputstream deserialization

我在排序2个对象时遇到问题。这两个对象来自同一个类,但它们具有不同的参数。 这是我写的代码:

        /* Write */
        FileOutputStream out = new FileOutputStream(inventoryList);
        ObjectOutputStream writeinvL = new ObjectOutputStream(out);
        ArrayList<File> Read = new ArrayList<File>();
        for (int i = 0; i < numItems; i++) {
            System.out.print("Enter the item number: ");
            itemNum = input.next();
            System.out.print("Enter the item name: ");
            itemName = input.next();
            System.out.print("Enter the amount in stock: ");
            inStock = input.nextInt();
            writeinvL.writeObject(new Item(itemNum, itemName, inStock));
        }
        writeinvL.close();

numitems是用户想要制作对象的次数。问题来自阅读,我目前有:

        ArrayList<Item> array = new ArrayList<Item>();
        FileInputStream in = new FileInputStream(inventoryList);
        ObjectInputStream readIn = new ObjectInputStream(in);

        for (int i = 0; i < numItems; i++) {
            Item inv = (Item) readIn.readObject();
            array.add((Item) readIn.readObject());
        }
        readIn.close();
        for (Item n : array) {
            System.out.println(n);
        }

但我不知道如何继续前进。

1 个答案:

答案 0 :(得分:0)

在第二个代码块中,在for循环中,您将对Item进行两次deserlalizing。也就是说,您有两行readIn.readObject()。你应该只为每个对象做一次。

替换:

array.add((Item) readIn.readObject());

array.add(inv);