Java 序列化列表<;BuffereImage>;在包含我的所有对象的文件中
我正在尝试序列化BuffereImage的列表 案例解读:-Java 序列化列表<;BuffereImage>;在包含我的所有对象的文件中,java,image,nullpointerexception,awt,Java,Image,Nullpointerexception,Awt,我正在尝试序列化BuffereImage的列表 案例解读:- List <BufferedImage> = new ArrayList<BufferedImage>(); public void serialize() { getDraftApp().getSerializeImages().add(ImageIO.read(new ByteArrayInputStream(read(image)))); try {
List <BufferedImage> = new ArrayList<BufferedImage>();
public void serialize()
{
getDraftApp().getSerializeImages().add(ImageIO.read(new
ByteArrayInputStream(read(image))));
try {
String path = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/")+"Applications"+"\\"+getsHandler().getDraftApp().getAppId()+"-"+getsHandler().getDraftApp().getAppVersion()+"\\"+"app.proj";
FileOutputStream fileOut = new FileOutputStream(path);
System.out.println("Data is saved in : "+getsHandler().getDraftApp().getPath());
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(getsHandler().getDraftApp());
out.close();
fileOut.close();
System.out.printf("Serialized data is saved!");
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
Logger.getLogger(ObjectManagements.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public byte[] read(File file) throws IOException {
ByteArrayOutputStream ous = null;
InputStream ios = null;
try {
byte[] buffer = new byte[4096];
ous = new ByteArrayOutputStream();
ios = new FileInputStream(file);
int read = 0;
while ((read = ios.read(buffer)) != -1) {
ous.write(buffer, 0, read);
}
}finally {
try {
if (ous != null)
ous.close();
} catch (IOException e) {
}
try {
if (ios != null)
ios.close();
} catch (IOException e) {
}
}
return ous.toByteArray();
}
“实际上,我不知道文件是否保存了我的列表”,但当我尝试反序列化时,我得到了NullPointerException,因为我的列表返回null
案例写作:-
public MdapApplication DeserializeApp(SessionHandler Sbean , String Path) {
setsHandler(Sbean);
try {
FileInputStream fileIn = new FileInputStream(Path +"\\"+ "app.proj");
ObjectInputStream in = new ObjectInputStream(fileIn);
MdapApplication DF = (MdapApplication) in.readObject();
in.close();
fileIn.close();
return DF;
} catch (IOException i) {
i.printStackTrace();
return null;
} catch (ClassNotFoundException c) {
System.out.println("Application class not found");
c.printStackTrace();
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
然后我从文件中获取对象
日志
我搜索了两天,没有发现任何东西,顺便说一句“我的列表可能包含png jpg”如果文件大小小于1000,您不创建
ByteArrayOutputStream
,因此ous.toByteArray()
将抛出NPE
很明显。是什么在扔NPE?显示堆栈trace.in for(BuffereImage eachImage:getsHandler().getDraftApp().getSerializeImages())…反序列化时的列表NPE停止在注释部分向我们扔碎屑。请在您的帖子中包含任何相关信息。NPE位于
Beans.HomeScreenBean.deserializeImages(HomeScreenBean.java
第271行。您还没有发布这方面的代码。我在序列化时没有问题,在反序列化BuffereImage列表时我的问题返回null我不知道为什么!我指的代码在公共字节[]读取(…)
。你自己肯定能看到吗?这是反序列化代码,而不是序列化代码。顺便说一句,我尝试在同一个函数中序列化和反序列化“仅用于测试”,但没有将其保存在一个文件中。我使用byte[]read(..)读取“序列化”图像,然后将其添加到列表中,如getSerializeImages()。添加(ImageIO.read(新ByteArrayInputStream(read(image));当我打印内容时,它会工作(每个页面:BufferedImage@3b7a74c6:type=5 ColorModel:#像素位…)
public MdapApplication DeserializeApp(SessionHandler Sbean , String Path) {
setsHandler(Sbean);
try {
FileInputStream fileIn = new FileInputStream(Path +"\\"+ "app.proj");
ObjectInputStream in = new ObjectInputStream(fileIn);
MdapApplication DF = (MdapApplication) in.readObject();
in.close();
fileIn.close();
return DF;
} catch (IOException i) {
i.printStackTrace();
return null;
} catch (ClassNotFoundException c) {
System.out.println("Application class not found");
c.printStackTrace();
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
MdapApplication temp = obm.DeserializeApp(getsHandler(), amfFile.getPath());
getDraftApp() = temp;
for (BufferedImage eachImage : getsHandler().getDraftApp().getSerializeImages() ) {
System.out.println("eachImage : "+eachImage);
ImageIO.write(eachImage, "png", new File(getsHandler().getDraftApp().getPath() +"\\"+ "myImage.png")); // png is lossless
}
25-Aug-2017 03:48:24.266 WARNING [http-nio-8084-exec-790]
com.sun.faces.lifecycle.InvokeApplicationPhase.execute #{apps.modify(mdapApp)}: java.lang.NullPointerException
javax.faces.FacesException: #{apps.modify(mdapApp)}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745) Caused by:
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 35 more Caused by: java.lang.NullPointerException
at Beans.HomeScreenBean.deserializeImages(HomeScreenBean.java:271)
at Beans.HomeScreenBean.modify(HomeScreenBean.java:301)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 36 more
25-Aug-2017 03:48:24.353 SEVERE [http-nio-8084-exec-790]
com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIData.broadcast(UIData.java:1108)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:70)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by:
java.lang.NullPointerException
at Beans.HomeScreenBean.deserializeImages(HomeScreenBean.java:271)
at Beans.HomeScreenBean.modify(HomeScreenBean.java:301)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.el.parser.AstValue.invoke(AstValue.java:247)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 36 more