我的项目是关于图书馆管理系统的。我必须将数据存储到类的对象中,然后将它们存储到ArrayList中。然后我在序列化数据。
我有这些功能:
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream("Database.ser");
oos = new ObjectOutputStream(fos);
oos.flush();
oos.writeObject(bookData);
oos.close();
fos.close();
}catch(Exception e){
System.out.println("Exception Caught: "+e);
}
我用来反序列化的代码:
FileInputStream fis = null;
ObjectInputStream ois = null;
//ArrayList<Books> bookData = null;
try {
fis = new FileInputStream("Database.ser");
ois = new ObjectInputStream(fis);
bookData = (ArrayList<Library>) ois.readObject();
}catch(Exception e){
System.out.println("Exception Caught: "+e);
}
我得到了一个异常,因为BufferedReader需要是瞬态的,这是修复的。但现在,我认为我的序列化不起作用了。每次我创建一本书,我都将它的索引(对象编号)存储在一个文本文件中。我的搜索技术都不起作用:ArrayIndexOutOfBounds异常被捕获。我试图完成arraylist的大小+1,但这也不起作用。
My code for searching. Before this the deserialization code is there.
try{
System.out.println("_________________Search Book_________________");
System.out.println("Enter Title of Book to Search: ");
String title = scan.readLine();
for(int i=0;i<bookData.size();i++)
{
if(title.equalsIgnoreCase(bookData.get(i).getBookTitle()))
{
if(bookData.get(i).getBookId() == getObjCount())
{
System.out.println("Book Found at ["+i+"]");
System.out.println("Displaying Book Data....");
System.out.println("Book Title : "+bookData.get(i).getBookTitle());
System.out.println("Book Author : "+bookData.get(i).getBookAuthor());
System.out.println("Book Subject : "+bookData.get(i).getBookSubject());
System.out.println("Book Price : "+bookData.get(i).getBookPrice());
System.out.println("No. of Copies : "+bookData.get(i).getAvailableCopies());
break;
}else{
System.out.println("Internal Error Caught.[1] Index Mismatch");
//Library.main();
}
}
else{
status=1;
}
}
if(status == 1)
{
System.out.println("Book Not Found.");
}
我不能发布答案,但我会努力帮助您与您的代码。首先,你最好阅读坚实的原则。因为,正如我所看到的,所有代码都在一个类中。它与单一责任原则无关。然后,您必须将Library类拆分为Book(将表示Book)、Library(可选,取决于您的任务)和Book(或Library)Service(将与Library一起工作--添加、删除、更新等。books)。之后,您将能够测试您的代码,您将更快地发现bug。这只是我的观点。
我试图序列化一个对象数组,并将其写入一个名为address.ser的文件,然后从该文件中读取,反序列化对象数组并显示其属性。我尝试一次序列化整个arrayList(读取时在单个会话中反序列化它),也尝试一个接一个地序列化对象数组的每个对象(读取时一个接一个地反序列化它)。问题是,当从address.ser文件读回来时,我只得到最后一个被写入的对象的数据,而不是其他的。 以下是代码片段: 这是用于将
本文向大家介绍java对象的序列化和反序列化,包括了java对象的序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化 将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化
错误: java.lang.ClassNotFoundException:testprocedure.tp$3在java.net.URLClassLoader$1上运行(未知源)在java.net.URLClassLoader上运行(未知源)在java.security.accessController.doprivileged(本机方法)在java.net.URLClassLoader.find
上下文:我们使用Activiti作为流程引擎,使用Activiti-Rest作为应用程序的接口。由于这个问题与返回由Java序列化的对象的REST服务有关,所以我没有将其添加到标题中。 场景:我们有一个JBoss Wildfly实例,它包含一个EAR和一个包含类“ProcessContext”的模块(为了参考,我们将其称为X)。Activiti在这个EAR中运行,ServiceTasks(从进程中
本文向大家介绍详解Java 对象序列化和反序列化,包括了详解Java 对象序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 之前的文章中我们介绍过有关字节流字符流的使用,当时我们对于将一个对象输出到流中的操作,使用DataOutputStream流将该对象中的每个属性值逐个输出到流中,读出时相反。在我们看来这种行为实在是繁琐,尤其是在这个对象中属性值很多的时候。基于此,Java中对象的序列
问题内容: 每当我尝试序列化文件时,都会收到错误消息:FileNotFound。不知道为什么。这是我的FileHelper代码: 问题答案: