Ma méthode ne fonctionne pas quand elle reçoit des arguments
Bonjour tout le monde,
Je recherche une partie de phrase dans un fichier txt.
Si cette partie de phrase existe, i est incrémenté de 1 autrement i ne bouge pas.
Si i est supérieur à -1, une méthode est appelée et je lui donne en argument le File, le FileReader et le BufferedReader.
Etrangement, quand je lui passe les arguments, la méthode ne me donne pas le résultat voulu, c'est à dire que la méthode ne lit pas lignes du fichier txt dans la boucle while par contre, quand je déclare à nouveau le file, le fr et le br dans ma nouvelle méthode, le résultat est correcte, la boucle while lit les lignes du txt, on dirait que les références du fichiers txt ne sont pas envoyées avec l'appel de la méthode sauriez-vous me dire ce qu'il se passe ?
Je vous laisse premièrement mon code en donnant les arguments, ensuite le code sans les arguments.
C'est vraiment important pour moi de comprendre car j'ai un examen de passage en août.
Merci d'avance pour votre aide.
beegees
Code en envoyant les arguments à la méthode (ça ne fonctionne pas):
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
| import java.io.*;
public class bidon
{
public static void main (String [] args) throws IOException
{
File f = new File("c:\\bidon.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String aRechercher = "SET PATH";
String ligne = "";
int i=-1;
while ((ligne=br.readLine())!=null)
{
System.out.println(ligne);
if(ligne.indexOf(aRechercher)!=-1)
{
//System.out.println("ligne.indexOf(aRechercher vaut " + ligne.indexOf(aRechercher));
System.out.println("trouve !");
i++;
System.out.println("i vaut " + i);
}
}
if (i>-1)
{
ajouterMot(f,fr,br);
}
}
public static void ajouterMot(File f, FileReader fr, BufferedReader br)throws IOException
{
File f2 = new File("c:\\bidon2.txt");
FileWriter fw = new FileWriter(f2);
BufferedWriter bw = new BufferedWriter(fw);
String aRechercher = "SET PATH";
String ligne = "";
int i=0;
while ((ligne = br.readLine())!=null)
{
System.out.println("ligne vaut "+ligne);
i++;
if (ligne.indexOf(aRechercher)!=-1)
{
ligne+= "bidon;";
bw.write(ligne);
bw.newLine();
}
else
{
bw.write(ligne);
bw.newLine();
}
}
System.out.println("i vaut " + i);
bw.close();
}
} |
code sans les arguments, je les crée dans la nouvelle méthode (et ça fonctionne)
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
| import java.io.*;
public class bidon
{
public static void main (String [] args) throws IOException
{
File f = new File("c:\\bidon.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String aRechercher = "SET PATH";
String ligne = "";
int i=-1;
while ((ligne=br.readLine())!=null)
{
System.out.println(ligne);
if(ligne.indexOf(aRechercher)!=-1)
{
//System.out.println("ligne.indexOf(aRechercher vaut " + ligne.indexOf(aRechercher));
System.out.println("trouve !");
i++;
System.out.println("i vaut " + i);
}
}
if (i>-1)
{
ajouterMot();
}
}
public static void ajouterMot()throws IOException
{
File f = new File("c:\\bidon.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
File f2 = new File("c:\\bidon2.txt");
FileWriter fw = new FileWriter(f2);
BufferedWriter bw = new BufferedWriter(fw);
String aRechercher = "SET PATH";
String ligne = "";
int i=0;
while ((ligne = br.readLine())!=null)
{
System.out.println("ligne vaut "+ligne);
i++;
if (ligne.indexOf(aRechercher)!=-1)
{
ligne+= ";c:\bidon;";
bw.write(ligne);
bw.newLine();
}
else
{
bw.write(ligne);
bw.newLine();
}
}
System.out.println("i vaut " + i);
bw.close();
}
} |