Bonjour ,
Je encontre actuellement un problèmes , je cherche à supprimer la dernière ligne de mon fichier XML ayant la structure suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<Arbre>
  <Arbre1>
    <Nummartelage>hhhh</Nummartelage>
    <latitude>37.421998333333335</latitude>
    <longitude>-122.08400000000002</longitude>
    <EssenceArbre>ggg</EssenceArbre>
    <Diametre>hhgh</Diametre>
    <Hauteur>gghf</Hauteur>
    <Volume>fgfg</Volume>
    <Qualité>fdfd</Qualité>
  </Arbre1>
</Arbre>


Donc je cherche tout d'abord à repérer le numéro de ligne correspondant à la dernière ligne , cela fonctionne et me retourne bien 13 lignes . Une fois le numéro de ligne récupérer je veut réécrire mon fichier en supprimant la 13 éme ligne ( dans le but d’inséré un nouvelle arbre ) mais bizarrement ça ne fonctionne pas ça me créer le même fichier sans me supprimer la ligne , quelqu'un pourrait me donner un coup de main pour me dire si je m'y prend correctement ou si je dois m'y prendre autrement ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
File newxmlfile = new File(Environment.getExternalStorageDirectory()+"/fichier.xml");
 
                    try {
                        /* On recupere le nombre de ligne du fichier */
                        int nbLigne = 0;
 
                        String ligne = null;
                        File file = new File(Environment.getExternalStorageDirectory()+"/fichier.xml");
                        BufferedReader reader = new BufferedReader(new FileReader(file));
                        // si on arrive ici le reader est instancié donc il faudra fermer les flux
                        try {
                            // tant qu'il il a au moins une ligne à lire
                            while((ligne = reader.readLine()) != null) {
                                // on incrémente le compteur
                                nbLigne++;
                            }
                        } finally {
                            reader.close();
                        }
                        // enfin on affiche le recupere le nombre de ligne : FONCTIONNEL
 
                        String val = String.valueOf(nbLigne);
                        Toast.makeText(MainActivity.this, val, Toast.LENGTH_LONG).show();
 
 
                        // ON SUPPRIMER LA DERNIERE LIGNE //
 
                            BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
 
                            StringBuffer sb = new StringBuffer();
                            String line;
                            int nbLinesRead = 0;
                            while ((line = reader2.readLine()) != null) {
                                if (nbLinesRead != nbLigne) {
                                    sb.append(line + "\n");
                                }
                                nbLinesRead++;
                            }
                            reader.close();
                            BufferedWriter out = new BufferedWriter(new FileWriter(file));
                            out.write(sb.toString());
                            out.close();