【问题标题】:Writing to a file from an array list and Vice Versa从数组列表写入文件,反之亦然
【发布时间】:2013-08-18 09:46:34
【问题描述】:

我创建了一个带有 3 个按钮和 1 个文本字段供用户输入的小程序。程序所做的是,它从用户那里获取输入并将其存储到一个数组列表中,然后当第二个按钮被按下时,它应该将数组列表写入文件。当第三个按钮被按下时,它应该从文件中读入一个数组列表。

我的问题是只得到第一条记录,这意味着如果我输入 2 个名字,当我按下第三个按钮时,我只会显示第一个名字。 这是我所做的:

2 个数组列表被贴花。

 ArrayList<Person>list=new ArrayList<Person>()                                  ArrayList<Person>list2=new ArrayList<Person>();

按下时接受用户输入的按钮

   String firstname=txtname.getText();

   Person p1=new Person(firstname,"pamodya","15","08","1995");

    list.add(p1);

将第一个 arraylist 对象写入文件的按钮。 试试{

        FileOutputStream write=new FileOutputStream("hello.txt");
        ObjectOutputStream writeFile=new ObjectOutputStream(write);

       writeFile.writeObject(list);
      writeFile.flush();
     writeFile.close();

       }catch(Exception e){e.getMessage();}

从文件中读取并在按下时打印到文本区域的按钮。

 try{
            FileInputStream read=new FileInputStream("hello.txt");
           ObjectInputStream readFile=new ObjectInputStream(read);


           Person p1=(Person)readFile.readObject();

          list2.add(p1);

          readFile.close();

          txtarea.setText(p1.getName());


    }catch(Exception e){e.getMessage();}

这里似乎有什么问题? 感谢您的宝贵时间。

编辑:

这是错误

【问题讨论】:

    标签: java serialization arraylist outputstream file-handling


    【解决方案1】:

    您正在编写 list,但正在阅读 Person。给定代码,您应该会收到 ClassCastException

    比较这两个:

     writeFile.writeObject(list);
     Person p1=(Person)readFile.readObject();
    

    你应该使用:

     List<Person> outList=(List)readFile.readObject();
     list2.addAll(outList);
    

    【讨论】:

    • 我已经上传了错误的屏幕截图,我无法获得堆栈跟踪,因为程序无法编译
    • 使用,ArrayList&lt;Person&gt; outList = (ArrayList) readFile.readObject();
    • 谢谢你成功了,你能解释一下你在这里做什么吗?据我了解,您将对象转换为“ArrayList”类型,然后将其分配给 ArrayList 类型的人。我说的对吗?
    【解决方案2】:

    恕我直言,在我看来,您没有在第三个按钮上循环浏览任何结果。您只需将找到的第一个结果显示出来。

    【讨论】:

      【解决方案3】:

      以下是需要确保的事项列表:

      1) 你的 Person 类是可序列化的吗? 2)当您打开文件时,您是否打开它进行附加? 3)我注意到你写了列表对象。但是您读取了 Person 对象。

      【讨论】:

        猜你喜欢
        • 2016-04-22
        • 2016-03-08
        • 1970-01-01
        • 2011-05-16
        • 2018-06-24
        • 2017-11-02
        • 1970-01-01
        • 2013-09-21
        • 2012-12-06
        相关资源
        最近更新 更多