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