2011-10-01 1 views
2

하나의 .bin 파일로 직렬화 된 여러 객체를 여는 데 문제가 있습니다. 지금은 파일을 열려고 할 때 하나의 객체 만 읽을 수 있습니다. 첫 번째 객체를 읽은 후에 오류 메시지가 표시됩니다 (더 이상 객체를 읽을 수 없음). 나는를 추적 내 버퍼 오브젝트 읽을 때스칼라 객체 직렬화

Exception in thread "AWT-EventQueue-0" java.security.PrivilegedActionException:java.security.PrivilegedActionException: java.io.IOException: Stream closed 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
Caused by: java.security.PrivilegedActionException: java.io.IOException: Stream closed 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$2.run(EventQueue.java:652) 
at java.awt.EventQueue$2.run(EventQueue.java:650) 
... 9 more 
Caused by: java.io.IOException: Stream closed 
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145) 
at java.io.BufferedInputStream.read(BufferedInputStream.java:241) 
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2248) 
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2541) 
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2551) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1296) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
atABCk.PhotoshopApp$$anonfun$ABCPhotoshopApp$$fileOpenPicture$1.apply$mcVI$sp(PhotoshopApp.scala:32) 
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:75) 
at ABC.PhotoshopApp$.ABC$PhotoshopApp$$fileOpenPicture(PhotoshopApp.scala:31) 
at ABC.PhotoshopApp$$anon$9$$anon$11$$anon$1$$anonfun$2.apply$mcV$sp(PhotoshopApp.scala:111) 
at scala.swing.Action$$anon$2.apply(Action.scala:60) 
at scala.swing.Action$$anon$1.actionPerformed(Action.scala:78) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
at javax.swing.AbstractButton.doClick(AbstractButton.java:389) 
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809) 
at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:137) 
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:913) 
at javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:568) 
at javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:465) 
at javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:411) 
at javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:305) 
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:852) 
at java.awt.Component.processMouseEvent(Component.java:6373) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
at java.awt.Component.processEvent(Component.java:6138) 
at java.awt.Container.processEvent(Container.java:2085) 
at java.awt.Component.dispatchEventImpl(Component.java:4735) 
at java.awt.Container.dispatchEventImpl(Container.java:2143) 
at java.awt.Component.dispatchEvent(Component.java:4565) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212) 
at java.awt.Container.dispatchEventImpl(Container.java:2129) 
at java.awt.Window.dispatchEventImpl(Window.java:2478) 
at java.awt.Component.dispatchEvent(Component.java:4565) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679) 
at java.awt.EventQueue.access$000(EventQueue.java:85) 
at java.awt.EventQueue$1.run(EventQueue.java:638) 
at java.awt.EventQueue$1.run(EventQueue.java:636) 
... 14 more 

이는 일이 다음의

val ois = new ObjectInputStream(new BufferedInputStream(newFileInputStream(chooser.selectedFile))) 
val toRead:Int = ois.readInt() 
    for (i <- 0 to toRead) { 
     ois.readObject() match { 
     case anObject : myObject => 
      aMutableBuffer += anObject 
     case _ => 
     } 
    ois.close() 
    } 

내가 점점 오전 오류입니다 많은 : 내 코드는 다음과 같습니다 개체. 또한, 파일을 올바르게 저장할 수 있습니다 (모든 것을 확인하기위한 테스트를 수행함). 누구든지 여기에서 무슨 일이 일어나고 있는지 아이디어가 있습니까?

답변

2

끝에 ois의 스트림을 닫지 만 루프 내부에 있습니다. 그런 다음 루프의 첫 번째 줄에서이 부분을 읽으려고합니다. 분명히 a와 함께 실패하는 것 IOException: Stream closed

+0

와아. 그것은 어리 석다, hah의 종류이었다. 그것을 잡아 주셔서 감사합니다 !! – MRN

+0

우리 모두 바보 같아요. 컴퓨터가 모든 중요한 작업을 수행하는 이유는 무엇입니까? –

+0

정확히 !! 그러나 우리는 중요한 일을 끝내기 위해 올바르게해야할 일을 그들에게 말해야합니다 ;-). 다시 한 번 감사드립니다! – MRN