saraseff
Messages postés125Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention27 avril 2013
-
24 avril 2011 à 15:27
Bonjour,
J ai un petit souci avec l utilisation des streams en java afin de stocker des donnees dans un fichier.
En fait,j ai une liste avec des objets "agence" et si l utilisateur veut en rajouter je lui donne un champs pour ecrire le nom de l'agence.Une fois qu il clique sur le bouton "creer" le nom de l agence doit y apparaitre mais bien sur doit aussi s ajouter au fichier que j ai nomme "Agences" et duquel je remplis la liste.
Le principe est simple mais sa ne marche que pour la premiere fois tandis que pour ajouter c 'est impossible et sa me sort des erreurs comme :
java.io.StreamCorruptedException: invalid stream header: 7372000E.
J ai un peu fouille sur le net et apparemment c est du a la reutilisation des ObjectOutputStream et qu'il fallait utiliser AppendableObjectOutputStream mais je ne sais pas comment je vais m en servir.
Voila le code et j espere avoir des reponses et suggestions de votre part.Merci
package interfaces;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.border.*;
import classes.Agence;
public class accueil extends JFrame implements ActionListener,Serializable{
private static final long serialVersionUID = 1L;
//components
JLabel presente=new JLabel("Veuillez choisir l'agence bancaire: ");
JLabel autre=new JLabel("Entrez le nom de l'agence bancaire: ");
JTextField nvelle=new JTextField(10);
JComboBox agnc=new JComboBox();
JButton valider=new JButton("Valider");
JButton creer=new JButton("Créer");
//containers
JPanel pan1=new JPanel();
JPanel pan2=new JPanel();
JPanel pan3=new JPanel();
JPanel content= new JPanel();
//importer les donnees
Vector liste=new Vector();
public accueil() throws IOException, ClassNotFoundException{
setTitle("Mon Application");
setSize(500,300);
setLocationRelativeTo(null);
creer_Agence("Projet IHM");
//ne sert qu a permettre de rajouter une agence
agnc.addItem("Créer autre...");
remplir_vector();
remplir_combo();
agnc.addActionListener(this);
pan1.setLayout(new FlowLayout(FlowLayout.CENTER));
pan2.setLayout(new FlowLayout(FlowLayout.CENTER));
pan3.setLayout(new FlowLayout(FlowLayout.CENTER));
content.setLayout(new BoxLayout(content,BoxLayout.Y_AXIS));
content.setBounds(100, 100, 600, 300);
pan1.add(presente);pan1.add(agnc);
pan2.add(valider);
content.add(pan1);
content.add(pan2);
content.add(pan3);
agnc.setEditable(false);
getContentPane().add(content);
valider.addActionListener(this);
creer.addActionListener(this);
show();
}
public void creer_Agence(String s){
ObjectOutputStream o=null;
try{
o=new ObjectOutputStream(new FileOutputStream("D:/Agences.txt"));
Agence agence=new Agence(Agence.nbAgences);
agence.setNom(s);
o.writeObject(agence);
}catch (FileNotFoundException ex) {
ex.printStackTrace();
}catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (o!= null) {
o.flush();
o.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void remplir_vector(){
ObjectInputStream o = null;
liste.removeAllElements();
try {
//Construct the ObjectInputStream object
o = new ObjectInputStream(new FileInputStream("D:/Agences.txt"));
Object obj = null;
while((obj = o.readObject()) != null) {
liste.addElement(((Agence)obj).getNom());
}
} catch (EOFException ex) { //This exception will be caught when EOF is reached
System.out.println("End of file reached.");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
//Close the ObjectInputStream
try {
if (o!= null) {
o.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void remplir_combo(){
for(int i=0;i<liste.size();i++){
agnc.addItem((String)(liste.elementAt(i)));
}
}
public void actionPerformed(ActionEvent e){
if(agnc.getSelectedItem()=="Créer autre..."){
pan3.add(autre);pan3.add(nvelle);pan3.add(creer);
pan3.setBorder(new LineBorder(Color.GRAY, 4));
pan3.setBackground(Color.WHITE);
}
if(e.getSource()==valider){
new index(""+agnc.getSelectedItem());
this.setVisible(false);
}
if(e.getSource()==creer){
agnc.removeAllItems();
creer_Agence(nvelle.getText());
remplir_vector();
remplir_combo();
agnc.addItem("Créer autre...");
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
new accueil();
}
}