Bonjour

Tout débutant, voici mon problème :

Avec RandomAccessFile (Texte du programme joint) :
- Je crée un fichier de noms d'auteurs (MonFichierAut) : OK, ça marche !
- J'ajoute à la fin un auteur ("Shakespeare") : OK, ça marche !
- Je voudrais remplacer dans le fichier l'auteur "Toto" par l'auteur "Mansfield" :
est-ce possible ?, si oui :

1) Quelle méthode utiliser pour savoir si la ligne que je viens de lire est "Toto"
2) Si j'arrive à déterminer si c'est la ligne de "Toto",
j'espère remplacer "Toto3 par "Mansfield",
après avoir relevé la position de la ligne où est "Toto" :
aut.seek (position);
aut.writeUTF("Mansfield");


Voici le texte de mon programme avec en commentaire gras les 3 lignes
correspondant à mon problème :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
        try {         
             
         // CREER
             
         RandomAccessFile aut =new RandomAccessFile("/Users/gimac/Desktop/MonFichierAut","rw");
         String auteurs [] = new String [6];
         String ecr [] = new String [7];
         int i = 0;
                      
                      auteurs [0] = "Pef"; 
                      auteurs [1] = "Murail"; 
                      auteurs [2] = "Morgenstern";
                      auteurs [3] = "Toto";
                      auteurs [4] = "Dahl"; 
                      auteurs [5] = "Morpurgo";
                      
                      // Créer dans MonFichierAut
                      for (i = 0; i < auteurs.length; i++) {
                      aut.writeUTF(auteurs[i]);                }     
                      
                      System.out.println ("***** Pause Lire *****");
                      // Lire dans ecr ce qui a été créé dans MonFichierAut
                      
                      aut.seek (0); // Pointer au début du fichier
                      for (i=0; i<auteurs.length; i++) {
                      ecr[i] = aut.readUTF ();
                      System.out.println (ecr[i]);         }

        // AJOUTER A LA FIN
                      
                      aut.seek(aut.length()); // Pointer en fin de fichier
                      aut.writeUTF("Shakespeare");
                      
                      System.out.println ("***** Pause Allonger *****");
                      // Relire MonFichierAut : Shakespeare a bien été ajouté
                      
                      aut.seek (0); // Pointer au début du fichier
                      for ( i=0; i<auteurs.length+1; i++) {
                      ecr[i] = aut.readUTF ();
                      System.out.println (ecr[i]);           }
                      
        // REMPLACER
      
                      aut.seek (0); // Pointer au début du fichier
                      long position = 0; // Position dans MonFichierAut
                      
                      for (i=0; i<auteurs.length+1; i++) {
                        position = aut.getFilePointer(); // Relevé position  
                        ecr[i] = aut.readUTF ();
                        
                      // Si ecr[i] est Toto (COMMENT COMPARER ?) alors :
                      // aut.seek (position); // Positionnement ligne de "Toto"
                      // aut.writeUTF ("Mansfield"); 
                                                         }
                      
                      System.out.println ("***** Pause Remplacer *****");
                      // Relire MonFichierAut et voir "Mansfield"
                      // Actuellement, pas de substitution
                      
                      aut.seek (0); // Pointer au début du fichier
                      for (i=0; i<auteurs.length+1; i++) {
                      ecr[i] = aut.readUTF ();
                      System.out.println (ecr[i]);           }
                      
              aut.close(); // Fermeture de MonFichierAut       
                      
              }          
          catch (IOException e) { 
              e. printStackTrace ();}

Merci beaucoup si quelqu'un a la patience
de se pencher sur mon problème.