Я изменил ваш код, потому что проблема была в count++
, что в конечном итоге привело к чтению всех строк из ваших файлов, и в line2 = readers.readLine()
, который снова будет считывать из первой строки файла ( программа работает half правильно, потому что она читает только 3 строки и только если line2 содержит ваш идентификатор). Теперь, чтобы ваша программа работала правильно, вам нужно либо использовать BufferedReader
, либо LineNumberReader
.
public static void main(String[] args) {
System.out.println("Escriba el ID Del Cliente");
String line2;
File file = new File(yourpathhere);
int lineCount = 0;
try {
PrintWriter output = new PrintWriter(new FileOutputStream(file, true));
LineNumberReader readers = new LineNumberReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
while ((line2 = readers.readLine()) != null) {
lineCount++;
if (line2.contains(CL.getId())) {
while (line2 != null && readers.getLineNumber() <= lineCount + 3) {
System.out.println(line2);
line2 = readers.readLine();
}
output.close();
readers.close();
break;
}
}
} catch (IOException ex) {
System.out.println("ERRORR!!!!!!");
}
}
PS : обратите внимание на метод getLineNumber()
, поскольку он увеличивает прочитанные строки до момента, когда вы его вызываете. Это означает, что если у нас не было lineCount
, а идентификатор, который мы пытаемся найти, находился на 6-й строке, значение getLineNumber()
в момент, когда line2.contains(CL.getId()) == true
было 6, поэтому readers.getLineNumber() <= 3
будет FALSE и программа больше не будет работать правильно. (Мы должны отслеживать прочитанные строки до того момента, пока мы не проверим идентификатор)