Partage
  • Partager sur Facebook
  • Partager sur Twitter

actuelisation d'un fichier txt

les fichier txt s'actualise pas

    3 décembre 2016 à 19:57:33

    bonjour,

    je souhait lire et écrire dans un fichier .txt, concernent la lecture il n'y a pas de problème.

    j'ai créé un JTable avec un JTableModel qui lui fonctionne avec des objets, puis j'ai créé une fonction qui récupère les donnes du fichier txt pour créé les objets que les JTableModel a besoin. jusque la tout va bien.

    ensuite quant l'utilisateur souhaite ajouter une donner il va donc cliquer sur un bouton d'ajout. La fenêtre va effacer le JTable pour faire place a un formulaire, l'utilisateur entre les donner puis clique sur valider. une fois chose faite le fichier est réécrit puis le formulaire est donc effacer pour faire place de nouveau au JTable.

    seulement voila le problème, pour une raison que je ne comprend pas la donner a ajouter a belle est bien ete ajouter seulement le seul moyen de l'afficher dans le JTable c'est de fermer mon logiciel ouvrir le fichier txt puis le refermer et ré ouvrir le logiciel.

    avez-vous une idée pour résoudre mon problème?

    merci d'avance pour vos réponses.

    pour récupéré les données : 

    /**
    	 * recupere les valeur du fichier 
    	 * @return un tableau d'objet serie
    	 * @throws IOException
    	 */
    	public ArrayList<ClassSerie> lecture() throws IOException {
    		ArrayList<ClassSerie> tabData = new ArrayList<>();
    		String[] val = null;
    
    		BufferedReader lecteurAvecBuffer=null;
    		String ligne;
    
    		InputStream in = getClass().getResourceAsStream("/fichier.txt");
    		lecteurAvecBuffer = new BufferedReader(new InputStreamReader(in));
    
    		while ((ligne = lecteurAvecBuffer.readLine())!=null){
    			val = ligne.split(";");
    			tabData.add(new ClassSerie(val[0], val[1], val[2]));
    		}
    		lecteurAvecBuffer.close();
    
    		return tabData;
    	}

    pour ajouter la donner : 

    /**
    	 * ecrit dans le fichier
    	 */
    	public void ecriture(String val_Ajout) {
    		ArrayList<String>test = new ArrayList<>();
    		try {
    			test = prepa_ecriture();
    		} catch (IOException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		
    		test.add(val_Ajout);
    		File fichierTexte = new File ("src/fichier.txt");
    	
    		FileWriter ecrireFichier;
    		
    		try{	
    			ecrireFichier = new FileWriter(fichierTexte);
    			
    			for(int i = 0; i < test.size(); i++){
    				ecrireFichier.write(test.get(i));
    			}
    			
    			ecrireFichier.close();
    		}catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}


    la class du model : 

    package application;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import javax.swing.table.AbstractTableModel;
    
    @SuppressWarnings("serial")
    public class ModelStatSerie extends AbstractTableModel {
    	 private ArrayList<ClassSerie> serie;
    	 
    	    private final String[] entetes = {"Nom", "Saison","Type"};  
    	                 
    	    public ModelStatSerie() {
    	        super();
            	Bdd bdd = new Bdd();
            	try {
    				serie = bdd.lecture();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    	    }
    	 
    	    public int getRowCount() {
    	        return serie.size();
    	    }
    	 
    	    public int getColumnCount() {
    	        return entetes.length;
    	    }
    	 
    	    public String getColumnName(int columnIndex) {
    	        return entetes[columnIndex];
    	    }
    	 
    	    public Object getValueAt(int rowIndex, int columnIndex) {
    	        switch(columnIndex){
    	            case 0:
    	                return serie.get(rowIndex).getNom();
    	            case 1:
    	                return serie.get(rowIndex).getSaison();
    	            case 2:
    	                return serie.get(rowIndex).getType();
    	            default:
    	                return null; //Ne devrait jamais arriver
    	        }
    	    }
    
    		public ArrayList<ClassSerie> getProduit() {
    			return serie;
    		}
    
    		public void setProduit(ArrayList<ClassSerie> client) {
    			this.serie = client;
    		}
    
    		public void changeListe() {
    			
    		}
    }




    • Partager sur Facebook
    • Partager sur Twitter
    si l'art du débogage est de traquer les erreurs alors la programmation est l'art de les créer
      5 décembre 2016 à 17:02:35

      pas d'idées?
      • Partager sur Facebook
      • Partager sur Twitter
      si l'art du débogage est de traquer les erreurs alors la programmation est l'art de les créer
        6 décembre 2016 à 9:10:13

        Il ne manquerait pas un flush avant de fermer ton fichier (je sait que ses nécessaire sur les flux web mais je ne sait plus si cela est nécessaire pour les fichier...)
        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2016 à 15:22:45

          Le problème :

          - tu lis ton fichier et tu le garde dans un tableau.

          - tu affiches ton tableau (je suppose).

          - tu écris dans ton fichier

          - tu ne relis pas le nouveau fichier ? ou/et tu ne recharges pas l'ArrayList ?

          • Partager sur Facebook
          • Partager sur Twitter
            6 décembre 2016 à 15:51:48

            Bonjour,
            Je vois un autre problème. Rien avoir avec le problème actuel.
            En lecture :
                    InputStream in = getClass().getResourceAsStream("/fichier.txt");
                    lecteurAvecBuffer = new BufferedReader(new InputStreamReader(in));
            en écriture :
                    test.add(val_Ajout);
                    File fichierTexte = new File ("src/fichier.txt");

            Pour le moment, ça va fonctionner, vu qu'il est en développement, mais après la compilation du programme, celui-ci ne fonctionnera plus. Tout ce qui se trouve dans le dossier "src", ne doit pas être ouvert avec "File", c'est une ressource, même en écriture.

            PS : Quand le programme sera compilé, la ressource sera contenue dans le programme et quand on va enregistrer
            le fichier dans le dossier "src", celui-ci sera un autre fichier extérieur au programme, donc il ne sera jamais lut par celui-ci.
            Bonne continuation.

            -
            Edité par pctronique 6 décembre 2016 à 15:59:07

            • Partager sur Facebook
            • Partager sur Twitter
              7 décembre 2016 à 11:41:37

              dorz

              en faite si l'arrayListe n'est pas recharger a proprement dit il recréé au moment de l'affichage du JTable. Donc au moment de l'affichage la fonction de récupération de donner et lance elle créé l'arraylist d'objet puis le passe au model qui place les donner correctement au sein du JTable.

              comme la fonction de récupération est lancer le fichier et donc relus de nouveau seulement il ignore complètement les nouvelles donnés enregistrer et ceux jusqu'a l'ouverture manuelle du fichier texte.

              florent m

              d’après ce que j'ai pu lire concernent le flush() en java le close() a le même effet.

              pctronique

              j'ai compiler pour tester et visiblement il utilise bien le bon fichier mais approfondirais les recherche de se coter la ;)

              merci de votre aide

              -
              Edité par tormod 7 décembre 2016 à 11:55:35

              • Partager sur Facebook
              • Partager sur Twitter
              si l'art du débogage est de traquer les erreurs alors la programmation est l'art de les créer
                8 décembre 2016 à 11:50:17

                Le pb peut venir de plusieurs sources, il faut le cerner :

                -pb de sauvegarde du fichier ?

                -pb de refresh de l'interface?

                Mets toi en debug et dis nous d'où vient le pb

                • Partager sur Facebook
                • Partager sur Twitter

                actuelisation d'un fichier txt

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown