从Java文件读取对象

从Java文件读取对象,java,serialization,Java,Serialization,我正在尝试序列化一个对象,然后从文件中反序列化。到目前为止,serialize可以工作(或者在运行时报告它可以工作)。由于某种原因,当我试图反序列化它时,它报告了StreamCorruptedException。 这是报告的堆栈跟踪: java.io.StreamCorruptedException: invalid stream header: 0A0A5072 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.ja

我正在尝试序列化一个对象,然后从文件中反序列化。到目前为止,serialize可以工作(或者在运行时报告它可以工作)。由于某种原因,当我试图反序列化它时,它报告了StreamCorruptedException。 这是报告的堆栈跟踪:

java.io.StreamCorruptedException: invalid stream header: 0A0A5072
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:806)
at java.io.ObjectInputStream.(ObjectInputStream.java:299)
at Assignment8.main(Assignment8.java:201)
在浏览了网络并试图找到一些例子之后,我相信我需要这样做

System.out.print("Please enter a file name to read:\n");
             filename = stdin.readLine().trim();

             try{                  
               FileInputStream fileIn = new FileInputStream(filename);
               ObjectInputStream in1 = new ObjectInputStream(fileIn);//line 201
               while(true){
                   try{
                       Project proj1 = (Project) in1.readObject();
                       ArrayList<Project> pla = new ArrayList<Project>();
                       pla.add(proj1);
                       for(Project proj:pla){
                           String nam = proj.getName();
                           String loc = proj.getLocation();
                           int num = proj.getNumber();
                           double bud = proj.getFund();
                           manage1.addProject(nam, loc, num, bud);
                       }
                   }catch(EOFException e){
                       System.out.println(filename+ " was read");
                       in1.close();
                       break;
                   }catch(ClassNotFoundException e){

                   }

               }
             }catch(FileNotFoundException e){
               System.out.println(filename+" was not found");
             }catch(IOException e){
               e.printStackTrace();
               System.out.println("io exception deserislaing");
             }
             break;
System.out.print(“请输入要读取的文件名:\n”);
filename=stdin.readLine().trim();
试试{
FileInputStream fileIn=新的FileInputStream(文件名);
ObjectInputStream in1=新的ObjectInputStream(fileIn);//第201行
while(true){
试一试{
项目proj1=(项目)in1.readObject();
ArrayList pla=新的ArrayList();
pla.add(项目J1);
用于(项目项目:pla){
字符串nam=proj.getName();
字符串loc=proj.getLocation();
int num=proj.getNumber();
double-bud=proj.getFund();
管理1.添加项目(nam、loc、num、bud);
}
}捕获(EOFEException e){
System.out.println(文件名+“已读取”);
in1.close();
打破
}catch(classnotfounde异常){
}
}
}catch(filenotfounde异常){
System.out.println(未找到文件名+);
}捕获(IOE异常){
e、 printStackTrace();
System.out.println(“io异常解列”);
}
打破
我使用ArrayList来保存从文件中读取的对象,然后再将它们添加到我的主ProjectManagement数组中。我正在读取的文件是.dat文件。这可能是我的错误吗?谢谢:)

您正试图使用从文件中获取序列化对象。您最初是否也使用将对象写入文件


当您用于读写的方法不是彼此相反时,通常会看到此
StreamCorruptedException

您是如何创建该文件的?这是我的教授在我们的提交网站上创建的文件。谢谢!这就是我的问题,我在用FileWriter写作。