2017-08-25 135 views
-1

我試圖序列BufferedImage的名單 情況下讀取一個文件: -序列化列表<的BufferedImage>在包含所有的對象

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(); 
     } 

登錄

eachImage : [email protected]: type = 5 ColorModel: #pixelBits = 
24 numComponents = 3 color space = [email protected] transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 960 height = 678 #numDataElements 3 dataOff[0] = 2 

,它工作正常「其實我不知道該文件是否保存我的列表」,但是當我嘗試反序列化時,我得到了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; 
     } 
    } 

然後我從文件

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 

我搜索了兩天得到的對象,我發現沒有什麼BTW 「我還可以列舉包含PNG,JPG」

+0

什麼是NPE?向我們展示您的堆棧跟蹤。 – shmosel

+0

for(BufferedImage eachImage:getsHandler()。getDraftApp()。getSerializeImages())... –

+0

反序列化時的NPE –

回答

0

如果文件大小小於1000,則不會創建ByteArrayOutputStream,因此ous.toByteArray()將會拋出NPE。

顯然。

+0

當序列化我的問題時反序列化BufferedImage列表返回null我沒有問題我不' t知道爲什麼 –

+0

我所指的代碼是在'public byte [] read(...)'。你可以自己看到嗎?這是反序列化代碼,而不是序列化代碼。 – EJP

+0

順便說一句我試圖序列化和反序列化「只用於測試」在它的工作相同的功能,而不保存在一個文件 –

相關問題