нормальный вывод при проверке а валидатор не принимает
Для решения этой задачи:
Инициализируй переменную Statics.FILE_NAME полным путем к файлу с данными, который содержит несколько строк.
В статическом блоке считай из файла с именем Statics.FILE_NAME все строки и добавь их по отдельности в List lines.
Требования:
Константа FILE_NAME не должна быть пустой.
В статическом блоке все строки из файла с именем FILE_NAME должны быть добавлены по отдельности в список lines.
Поле FILE_NAME НЕ должно быть final.
Класс Solution должен содержать список lines.
package com.javarush.task.task15.task1525;
public class Statics {
public static String FILE_NAME = "C:/1.txt" /* add the path to your source file here */;
}
0
Комментарии (5)
популярные
новые
старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Привет! Нет, вывод не нормальный, и нормальным не будет. Попробуй добавить в файл русские буквы. Вкратце:
InputStream/OutputStream работают с байтами. Символ в зависимости от кодировки может быть представлен более, чем одним байтом, поэтому твой алгоритм сработает для латиницы, например, но даст кракозябры на кириллице.
Варианты: заменить InputStream на реализацию Reader (который работает с символами, а не байтами), например, FileReader - тогда всего пару изменений внести в существующий код, или BufferedReader, и считывать построчно.
Либо просто вызвать Files#readAllLines(Path path, Charset cs), который уже возвращает List строк (можно без указания чарсета, дефолтный - UTF-8. Метод считывает строки через BufferedReader), тогда всё решение - пару строк кода.
Может, есть ещё камни, код очень плохо читается.
Согласен. Это уже проблема кодировок. Вообще, корректно прочитать текстовый файл, не зная, в какой он кодировке - анрил.
BufferedReader по дефолту читает файл, как UTF-8, а у тебя файл был в другой кодировке.
Дело в том, что текстовый файл - это все равно набор байт.
Например, в кодировке А буква 'я' записывается двумя байтами: 0xF5 0xFF, а кодировка B - однобайтная и в ней байт 0xF5 - это 'z', а байт 0xFF - это '#', а буквы 'я' нет вообще. Ты записываешь в файл в кодировке А букву 'я', а кто-то пытается прочитать этот файл, используя кодировку B, и получает на выходе 'z#' вместо 'я'.