Java 从ObjectInputStream读取序列化对象
第一次尝试从文件中读入对象时,我将如何读入我编写的文件Java 从ObjectInputStream读取序列化对象,java,object,io,serializable,Java,Object,Io,Serializable,第一次尝试从文件中读入对象时,我将如何读入我编写的文件 private static final long serialVersionUID = -4654676943759320425L; private ArrayList<ArrayList<Object>> world; private ArrayList<AFood> foods; private ArrayList<ABlock> blocks; private ArrayLis
private static final long serialVersionUID = -4654676943759320425L;
private ArrayList<ArrayList<Object>> world;
private ArrayList<AFood> foods;
private ArrayList<ABlock> blocks;
private ArrayList<ABug> bugs;
private String name = null;
private int lengthX = 0, lengthY = 0;
这就是我目前试图读取对象的方式
save = new FileOutputStream(worldNameAs + ".aBugsWorld");
saveBuffer = new BufferedOutputStream(save);
saveOut = new ObjectOutputStream(saveBuffer);
saveOut.writeObject(this.worldSave); // Here was the problem
我就是这样写这个文件的
显然,这是不正确的,我不知道如何读入对象,无论是必须逐个插入变量还是作为一个整体插入变量,我都不知道
编辑:我正在将流写入一个文件,而不是我的对象,这导致了问题(因为文件IO流无法转换为一个世界)看起来还可以。只需确保您只写/只读可序列化对象,这在您的示例中并不清楚。此外,我会使流结构更简单
ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStrea(file))
);
您不需要保存对中间流的引用。看起来还可以。只需确保您只写/只读可序列化对象,这在您的示例中并不清楚。此外,我会使流结构更简单
ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStrea(file))
);
您不需要保存对中间流的引用。看起来还可以。只需确保您只写/只读可序列化对象,这在您的示例中并不清楚。此外,我会使流结构更简单
ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStrea(file))
);
您不需要保存对中间流的引用。看起来还可以。只需确保您只写/只读可序列化对象,这在您的示例中并不清楚。此外,我会使流结构更简单
ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStrea(file))
);
您不需要保存对中间流的引用。它看起来是正确的。
但有人认为,要写在文件上的类必须是可序列化的
您也可以这样做:
1.>要写入文件的类:
class StudentRecord implements Serializable{
String name;
public StudentRecord(String name) {
this.name=name;
}
}
2.>写入文件
File f=new File("xyz.txt");
f.createNewFile();
fo = new FileOutputStream(f);
ObjectOutput oo=new ObjectOutputStream(fo);
StudentRecord w=new StudentRecord("MyName");
oo.writeObject(w);
3.>从文件中读取
File f=new File("xyz.txt");
fi = new FileInputStream(f);
ObjectInputStream oi=new ObjectInputStream(fi);
StudentRecord sr=(StudentRecord)oi.readObject();
看起来是对的。
但有人认为,要写在文件上的类必须是可序列化的
您也可以这样做:
1.>要写入文件的类:
class StudentRecord implements Serializable{
String name;
public StudentRecord(String name) {
this.name=name;
}
}
2.>写入文件
File f=new File("xyz.txt");
f.createNewFile();
fo = new FileOutputStream(f);
ObjectOutput oo=new ObjectOutputStream(fo);
StudentRecord w=new StudentRecord("MyName");
oo.writeObject(w);
3.>从文件中读取
File f=new File("xyz.txt");
fi = new FileInputStream(f);
ObjectInputStream oi=new ObjectInputStream(fi);
StudentRecord sr=(StudentRecord)oi.readObject();
看起来是对的。
但有人认为,要写在文件上的类必须是可序列化的
您也可以这样做:
1.>要写入文件的类:
class StudentRecord implements Serializable{
String name;
public StudentRecord(String name) {
this.name=name;
}
}
2.>写入文件
File f=new File("xyz.txt");
f.createNewFile();
fo = new FileOutputStream(f);
ObjectOutput oo=new ObjectOutputStream(fo);
StudentRecord w=new StudentRecord("MyName");
oo.writeObject(w);
3.>从文件中读取
File f=new File("xyz.txt");
fi = new FileInputStream(f);
ObjectInputStream oi=new ObjectInputStream(fi);
StudentRecord sr=(StudentRecord)oi.readObject();
看起来是对的。
但有人认为,要写在文件上的类必须是可序列化的
您也可以这样做:
1.>要写入文件的类:
class StudentRecord implements Serializable{
String name;
public StudentRecord(String name) {
this.name=name;
}
}
2.>写入文件
File f=new File("xyz.txt");
f.createNewFile();
fo = new FileOutputStream(f);
ObjectOutput oo=new ObjectOutputStream(fo);
StudentRecord w=new StudentRecord("MyName");
oo.writeObject(w);
3.>从文件中读取
File f=new File("xyz.txt");
fi = new FileInputStream(f);
ObjectInputStream oi=new ObjectInputStream(fi);
StudentRecord sr=(StudentRecord)oi.readObject();
有一个问题,我可能应该包括在内。线程“main”java.lang中出现异常。错误:未解决的编译问题:类型不匹配:无法从对象转换为世界我以前也没有使用过serializable,不知道您在说什么。请您解释一下好吗?我试过了,当它运行时,它说它不能将对象强制转换到世界。正如我所说的,我正在将文件IO流写入导致问题的文件。有时候,最愚蠢的问题会让你困惑好几天。注意/谢谢,我确实意识到您不必参考中间流:这只是为了让我了解它是如何工作的(否则我会更加困惑!)有一个问题,我可能应该包括在内。线程“main”java.lang中出现异常。错误:未解决的编译问题:类型不匹配:无法从对象转换为世界我以前也没有使用过serializable,不知道您在说什么。请您解释一下好吗?我试过了,当它运行时,它说它不能将对象强制转换到世界。正如我所说的,我正在将文件IO流写入导致问题的文件。有时候,最愚蠢的问题会让你困惑好几天。注意/谢谢,我确实意识到您不必参考中间流:这只是为了让我了解它是如何工作的(否则我会更加困惑!)有一个问题,我可能应该包括在内。线程“main”java.lang中出现异常。错误:未解决的编译问题:类型不匹配:无法从对象转换为世界我以前也没有使用过serializable,不知道您在说什么。请您解释一下好吗?我试过了,当它运行时,它说它不能将对象强制转换到世界。正如我所说的,我正在将文件IO流写入导致问题的文件。有时候,最愚蠢的问题会让你困惑好几天。注意/谢谢,我确实意识到您不必参考中间流:这只是为了让我了解它是如何工作的(否则我会更加困惑!)有一个问题,我可能应该包括在内。线程“main”java.lang中出现异常。错误:未解决的编译问题:类型不匹配:无法从对象转换为世界我以前也没有使用过serializable,不知道您在说什么。请您解释一下好吗?我试过了,当它运行时,它说它不能将对象强制转换到世界。正如我所说的,我正在将文件IO流写入导致问题的文件。有时候,最愚蠢的问题会让你困惑好几天。注意/谢谢,我意识到您不必引用中间流:这只是为了让我能够理解它是如何工作的(否则我会更加困惑!)我正在向文件而不是我的世界写入文件IO对象!我真傻,有时候是最小的事情。虽然现在当我试图拯救世界时,它试图编写的所有变量都出现了异常“at java.io.ObjectOutputStream.writeObject0(未知源)”…并且我必须序列化世界上使用的所有其他类。我正在将一个文件io对象写入该文件,而不是我的世界!我真傻,有时候是最小的事情。虽然现在当我试图拯救世界时,它试图编写的所有变量都出现了异常“at java.io.ObjectOutputStream.WriteObject 0(未知源)”…我必须序列化世界上使用的所有其他类。我正在编写一个Fil