Добрый день, уважаемые коллеги :)
Не могу понять где он входит в бесконечный цикл? Программа вроде бы составлена верно, но я явно где то накосячил, помогите разобраться где?
Спасибо за внимание.
package com.javarush.task.task18.task1822;
/*
Поиск данных внутри файла
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
File file = new File(r.readLine());
r.close();
FileInputStream isr = new FileInputStream(file);
InputStreamReader fis = new InputStreamReader(isr, "UTF-8");
String strID = "";
String str = "";
boolean start = true;
while(fis.ready()) {
int data = fis.read();
//если это первая строка
if(start){
//считываю строку ID до пробела
while(data != 32){
strID += (char)data;
data = fis.read();
}
//проверяю ID на соответствие первого аргумента
if(strID.equals(args[0])){
//"ухожу" с символа пробела
data = fis.read();
while(data!=10){
str += (char)data;
data = fis.read();
}
break;
}
//если не равен то "довожу" курсор до символа переноса строки, выставляю стартовую позицию false
else{
while(data != 10){
data = fis.read();
}
start = false;
}
}
//если это не первая строка
else {
strID = "";
//считываю строку ID до пробела
while(data!=32){
strID += (char)data;
data = fis.read();
}
//проверяю ID на соответствие первого аргумента
if(strID.equals(args[0])){
//"ухожу" с символа пробела
data = fis.read();
while(data!=10){
str += (char)data;
data = fis.read();
}
break;
}
//если ID не равен довожу курсор до символа переноса строки, перехожу на следующую итерацию цикла while
else{
while(data!=10){
data = fis.read();
}
}
}
}
fis.close();
System.out.println(str);
}
}