Boas pessoal.
Eu estou com um problema com a seguinte excepção: java.io.EOFException
Estou a fazer um programa para uma loja de video, e tenho uma classe ficheiro que tem vários métodos, um dos quais é: lerFicheiroObjectos(int tipo, Vector v) -> o tipo indica qual o ficheiro a ler e o objectivo é ler linha a linha do ficheiro de objectos e ir escrevendo num vector que no final é retornado. O programa funciona todo bem e nem da para notar nos erros sem ser na consola do netbeans.
Lista de erros da exepção:
A parte de código é a seguinte:
Numa das linhas de erro, aponta para:
Repito: corre tudo bem, acho que está a acontecer alguma coisa a ler ou a escrever do/no final do ficheiro de objectos.
Alguém me poderia ajudar?
Obrigado
Eu estou com um problema com a seguinte excepção: java.io.EOFException
Estou a fazer um programa para uma loja de video, e tenho uma classe ficheiro que tem vários métodos, um dos quais é: lerFicheiroObjectos(int tipo, Vector v) -> o tipo indica qual o ficheiro a ler e o objectivo é ler linha a linha do ficheiro de objectos e ir escrevendo num vector que no final é retornado. O programa funciona todo bem e nem da para notar nos erros sem ser na consola do netbeans.
Lista de erros da exepção:
PHP:
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at clubevideo.Ficheiro.leFicheiroObjectos(Ficheiro.java:474)
at clubevideo.GestaoSistema.getListaVideos(GestaoSistema.java:88)
at clubevideo.visualizaStockGUI.cb_escolhaActionPerformed(visualizaStockGUI.java:197)
at clubevideo.visualizaStockGUI.access$000(visualizaStockGUI.java:17)
at clubevideo.visualizaStockGUI$1.actionPerformed(visualizaStockGUI.java:66)
at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)
at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:814)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:480)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
ObjectOutputStream não foi aberto.
A parte de código é a seguinte:
Código:
// -- lê objectos dos ficheiros e coloca-os num Vector que é retornado
public static Vector leFicheiroObjectos(int type) throws IOException, ClassNotFoundException{
ObjectInputStream ois = null;
(...)
else if(type == 7){
fileName = "Videos.dat";
Vector<Video> videos = new Vector<Video>();
try{
ois = new ObjectInputStream(new FileInputStream(fileName));
Video v = (Video) ois.readObject();
while(v != null){
videos.addElement(v);
v = (Video) ois.readObject();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if (ois == null){
System.out.println("Chegou ao final da escrita do ficheiro.");
ois.close();
}else{
System.out.println("ObjectOutputStream não foi aberto.");
}
}catch(IOException e){
System.out.println("Não foi possível fechar o ObjectOutputStream.");
}
}
vect_retornado = videos;
}
(...)
}
Numa das linhas de erro, aponta para:
Código:
v = (Video) ois.readObject();
Repito: corre tudo bem, acho que está a acontecer alguma coisa a ler ou a escrever do/no final do ficheiro de objectos.
Alguém me poderia ajudar?
Obrigado