Modifier avec RandomAccessFile
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:
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.