Я в замешательстве. Я пытаюсь зациклировать хотя бы 2 файла, просматривая первый токен в каждой строке первого файла и сравнивая его с третьим токеном каждой строки второго файла. Здесь логическая структура в виде вложенного в то время цикла:java inested while loop using 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);
}
}
}
Тем не менее, все, что я вижу в выходе первый маркер из первой строки первого файла и третьего маркера от каждой строки второй файл повторяется 6000 (длина файла 2) раз независимо от того, были ли они «равными» или нет. Это связано с их различными кодировками? Я вижу, что это влияет на тест равных, но почему не работает поведение цикла?
Приветствия, Brandon
Ах, спасибо ammoQ, что все исправлено. Я относительно новичок в файле io в java. Почему я должен открыть файл во внешнем цикле? – Brandon
Брэндон: Потому что после первого запуска внутренней петли читатель2 уже находится в конце потока; поэтому в следующий раз, когда вы войдете во внутренний цикл while, readLine() вернет null. Самый простой (хотя, вероятно, не самый быстрый) способ закрыть это и закрыть его снова. –
Ах, конечно. Еще раз спасибо! – Brandon