Java 无法使用类对象写入文件ArrayList

Java 无法使用类对象写入文件ArrayList,java,arraylist,Java,Arraylist,我重新搜索了很多网站,但找不到answear。我正试图将包含类对象的ArrayList写入.txt文件。每次我试着做这件事时,都会有例外。阅读也是同样的问题。这是我的密码: public static void write() { try { FileOutputStream out = new FileOutputStream("clients.txt"); ObjectOutputStream oout = new ObjectOutputS

我重新搜索了很多网站,但找不到answear。我正试图将包含类对象的ArrayList写入.txt文件。每次我试着做这件事时,都会有例外。阅读也是同样的问题。这是我的密码:

public static void write()
{
    try 
    {
        FileOutputStream out = new FileOutputStream("clients.txt");
        ObjectOutputStream oout = new ObjectOutputStream(out);
        oout.writeObject(lista);
        oout.close();
    }
    catch(Exception ioe)
    {
        System.out.println("writing Error!");
        welcome();
    }
}
public static void read()
{

    try
    {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("clients.txt"));
        lista = (List<Client>) ois.readObject();
    }
    catch (ClassNotFoundException ex) 
    {
        System.out.println("Koniec pliku");
    }
    catch(IOException ioe)
    {
        System.out.println("Error!");
        welcome();
    }
}
publicstaticvoidwrite()
{
尝试
{
FileOutputStream out=新的FileOutputStream(“clients.txt”);
ObjectOutputStream oout=新的ObjectOutputStream(out);
oout.writeObject(lista);
oout.close();
}
捕获(异常ioe)
{
System.out.println(“写入错误!”);
欢迎();
}
}
公共静态无效读取()
{
尝试
{
ObjectInputStream ois=新ObjectInputStream(新文件输入流(“clients.txt”);
lista=(List)ois.readObject();
}
捕获(ClassNotFoundException ex)
{
System.out.println(“Koniec pliku”);
}
捕获(ioe异常ioe)
{
System.out.println(“错误!”);
欢迎();
}
}

我想您正在寻找Java的可序列化接口。为了保存对象,您的类必须实现它

问题是:你到底想保存什么?列表的内容,以便您可以将其保存在文件中并在以后加载

这个简单的例子适用于我(对于我上面提到的场景):

公共类用户实现可序列化{
私有静态最终长serialVersionUID=1L;
私有字符串名称;
私人互联网;
公共用户(字符串名,int-ag){
this.name=名称;
这个。年龄=年龄;
}
@凌驾
公共字符串toString(){
返回(this.name+“”+this.age);
}
}
公共班机{
私有静态列表l;
公共静态void main(字符串[]args){
l=新的ArrayList();
user1=新用户(“John”,22);
user2=新用户(“Jo”,33);
l、 添加(user1);
l、 添加(用户2);
write();
}
公共静态void write(){
试一试{
FileOutputStream fos=新的FileOutputStream(“testout.txt”);
BufferedOutputStream bos=新的BufferedOutputStream(fos);
ObjectOutputStream oos=新的ObjectOutputStream(bos);
oos.writeObject(l);
oos.close();
}捕获(异常ioe){
System.out.println(“写入错误!”);
}
}
}
好的,我对这项工作做了一些修改(不是每个功能,只是读写功能)。 .
重要的一点是Scanner类是不可序列化的。因此,例如,您必须将其设置为静态。

我试图保存的是带有类对象的ArrayList,以您的用户为例。例如:我创建了3个用户,将它们添加到ArrayList中,并希望以同样的方式将其保存到.txt fileWorks中。文本文件中的输出看起来当然有点奇怪,因为对象(列表)已保存。可以显示整个代码吗?不仅仅是你在上面写的部分,你还有我的*.java文件
public class User implements Serializable {
   private static final long serialVersionUID = 1L;

   private String name;
   private int age;

   public User(String name, int ag) {
      this.name = name;
      this.age = age;
   }

   @Override
   public String toString() {
     return (this.name + ' ' + this.age);
   }
}
public class Main {
   private static List<User> l;

   public static void main(String[] args) {
     l = new ArrayList<User>();
     user1 = new User("John", 22);
     user2 = new User("Jo", 33);
     l.add(user1);
     l.add(user2);
     write();
   }

   public static void write() {
      try {
        FileOutputStream fos = new FileOutputStream("testout.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(l);
        oos.close();
    } catch (Exception ioe) {
        System.out.println("writing Error!");

    }
  }
}