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.
Partager