2014-02-07 61 views
0

首先,變量是葡萄牙語的,但不影響代碼的理解。如何讀取幾個對象FileInputStream?

這裏是我的代碼:

public ArrayList<Produto> recuperarProdutos(){ 
    ArrayList<Produto> produtos = new ArrayList<>(); 
    Produto p = new Produto(); 

    ObjectInputStream leitorObj = null; 
    FileInputStream leitorArquivo = null; 
    try { 
     leitorArquivo = new FileInputStream("files\\Produtos.ser"); 
     leitorObj = new ObjectInputStream(leitorArquivo); 
     p = (Produto)leitorObj.readObject(); 
     produtos.add(p); 
    } catch(EOFException e) { 
    try { 
     leitorArquivo.close(); 
    } catch (IOException ex) { 
     System.out.println(ex.getMessage()); 
    } 
    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } finally { 
     try { 
      if (leitorArquivo != null) leitorArquivo.close(); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

    return produtos; 
} 

這個代碼將增加在我的ArrayList只是第Produto對象有我的文件。這不是我想要的,是否有Java中的EOF做循環並讀取每個對象?

回答

0

Try:

while ((p = (Produto)leitorObj.readObject()) != null) { 
    produtos.add(p); 
}