我已经搜索了很多网站,但我找不到了。我正在尝试将.txt文件写入我的ArrayList,它构成了类对象。每次我尝试这样做,我都会遇到异常。阅读是同样的问题。这是我的代码:
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();
}
}
答案 0 :(得分:0)
我猜你正在寻找Java的 Serializable 接口。为了保存对象,你必须实现它。
问题是:你想要保存什么?列表的内容,以便您可以将其保存在文件中并在之后加载它?
这个简单的例子对我有用(对于我上面提到的场景):
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!");
}
}
}
答案 1 :(得分:0)
好的我已经改变了一点(不是每个函数只是读写功能)而且这项工作。 Link to Code。 一个重要的事情是Scanner类不可序列化。因此,您必须将其设置为静态。