Код прекрасно отрабатывает на файлах с русскими и английскими буквами, но валидатору не нравится что-то.
Что может быть не так?
package com.javarush.task.task18.task1822;
/*
Поиск данных внутри файла
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
public class Solution {
public static void main(String[] args) throws IOException {
//id для поиска в файле
String id = args[0];
//флаг для найденного id
boolean isFound = false;
//код ASCII для текущего символа в файле
int currentSymbol;
//строка для вывода в консоль
StringBuilder productInformationLine = new StringBuilder();
//читаем имя файла
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = reader.readLine();
//открываем поток для чтения файла в UTF-8 для распознавания русских символов
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(fileName1), StandardCharsets.UTF_8);
//ридер отправляем читать файл
reader = new BufferedReader(inputStreamReader);
//считываем первый символ
currentSymbol = reader.read();
//читаем пока не кончится файл и пока не найден нужный id
while (currentSymbol != -1 && !isFound){
//проверка на конец строки
if (currentSymbol == (int) '\n'){
//обнуление текущей строки
productInformationLine = new StringBuilder();
currentSymbol = reader.read();
}
//заполнение текущей строки и проверка не ровна ли она id
productInformationLine.append((char) currentSymbol);
currentSymbol = reader.read();
if (productInformationLine.toString().equals(id)){
isFound = true;
}
}
//т.к. строка найдена, каретка чтения файла установлена после нужного id. Готовим информацию к печати.
// обнуляем строку
productInformationLine = new StringBuilder();
currentSymbol = reader.read();
//читаем файл пока не кончится строка и пока файл не кончился
while (currentSymbol != -1 && currentSymbol != (int) '\n'){
productInformationLine.append((char)currentSymbol);
currentSymbol = reader.read();
}
//вывод информации о продукте и закрытие потоков.
System.out.println(productInformationLine);
reader.close();
inputStreamReader.close();
}
}