Je suis confus. J'essaye de boucler 2 fichiers en regardant le premier jeton dans chaque ligne du premier fichier et en le comparant au troisième jeton de chaque ligne du deuxième fichier. Voici la structure logique sous la forme d'un imbriquée en boucle:java imbriqué en boucle en utilisant readline
BufferedReader reader1 = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile1)));
BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile2),"EUC-JP"));
String line1, line2 = null;
String temp1, temp2 = null;
while ((line1=reader1.readLine()) != null)
{
StringTokenizer st1 = new StringTokenizer(line1);
temp1 = "U"+st1.nextToken();
while((line2=reader2.readLine()) != null)
{
StringTokenizer st2 = new StringTokenizer(line2);
temp2 = st2.nextToken();
temp2 = st2.nextToken();
temp2 = st2.nextToken();
if(temp2.equals(temp1));
{
System.out.println(temp1+" "+temp2);
}
}
}
Cependant, tout ce que je vois dans la sortie est le premier jeton de la première ligne du premier fichier et le troisième jeton de chaque ligne de la deuxième fichier répété 6 000 (la longueur du fichier 2) fois indépendamment du fait qu'ils étaient "égaux" ou non. Est-ce que cela a à voir avec leurs différents encodages? Je peux voir que cela a un effet sur le test d'égalité, mais pourquoi la boucle ne se comporte-t-elle pas correctement?
Cheers, Brandon
Ah, Merci ammoQ qui a tout réparé. Je suis relativement nouveau dans le fichier io en Java. Pourquoi dois-je ouvrir le fichier dans la boucle externe? – Brandon
Brandon: Parce que, après la première exécution de la boucle interne, reader2 est déjà à la fin du flux; Donc la prochaine fois que vous arriverez à la boucle while interne, readLine() ne retournera que null. Le moyen le plus simple (mais probablement le plus rapide) est de fermer et de rouvrir le lecteur de flux. –
Ah, bien sûr. Merci encore! – Brandon