Последовательный вывод файлов

  • 9
  • Недоступна
1. Разберись, что делает программа. 2. В статическом блоке считай 2 имени файла firstFileName и secondFileName. 3. Внутри класса Solution создай нить public static ReadFileThread, которая реализует интерфейс ReadFileInterface (Подумай, что больше подходит - Thread или Runnable). 3.1. Метод setFileNa
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (158)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Ярослав18 уровень, Москва
7 августа, 11:48
Ставить первым пробел это так круто! Можно еще спать на потолке (кроме австралийцев конечно)
Maxim20 уровень, Москва
3 августа, 22:15
 Не понятно зачем было каждый раз дополнительно добавлять пробел при чтении. Вывод не поменялся, зато минус 10 попыток. Дибильная проверка.
Дмитрий20 уровень
1 августа, 18:22
Для чего вы в интерфейс ReadFileInterface добавили методы join и start? Чтобы запутать людей? Сделал реализовав интерфейс Runnable и реализовав эти методы, в итоге валидатор сказал что нужно наследоваться от Thread, но в этом случае эти методы реализовывать не нужно.
Luk_d19 уровень
9 августа, 21:01
Потому что переменная f типа ReadFileInterface, и если бы в интерфейсе не были бы прописаны методы join() и start(), то их было бы невозможно реализовать (разве только через явное приведение к ReadFileThread).
Дмитрий20 уровень
пятница, 15:05
Зачем их вообще прописывать в интерфейсе, который для этого не предназначен? Он называется даже просто ReadFileInterface. Реализаций может быть много разных, и не обязательно через потоки. Логичнее было бы, чтобы одна из реализаций этого интерфейса, также реализовывала Runnable, если требуется чтение в потоках. Либо интерфейс ReadFileInterface унаследовать от Runnable, если уж так нужно чтобы реализации были только через потоки.
Виолетта18 уровень, Санкт-Петербург
26 июля, 14:46
Зачем мы используем сеттер вообще здесь? Потому что не можем передать имя файла сразу в run()?
Алексей20 уровень, Киев
26 июня, 19:28
Метод getFileContent должен возвращать содержимое файла. Это просто геттер который возвращает переменную стринг в которую мы считываем строки из файла.
Александр33 уровень, Минск
1 июня, 19:11
Проверял при построчном чтении из файла на isEmpty, кидало исключение NullPointerException. Сравнил просто s==null - все заработало. Выходит BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); при пустой строке в файле возвращает не пустую строку, а null? т.е. отсутствие объекта String..
Алексей19 уровень, Новосибирск
20 июня, 14:10
Ага, такая-же петрушка, только я использовал
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
Не догадался, где собака зарыта. Ошибку валидатор пропускает, если завернуть в try-catch. Надо этот момент запомнить :)
Petr18 уровень, Москва
1 июня, 17:23
Добился валидации после продолжительной возни...но ясности насчет FileReader нет .Хотел сам попробовать работу программы, как ей показать какой нибудь файл чтобы она его могла считывать?Где он должен находиться? как путь к нему задать? Только у меня такой вопрос?
Yerzhan20 уровень
19 июня, 19:09
у меня проблем не возникло с этим, посмотрел, что в импорте есть FileReader и Scanner, потому решил считывание файла через них, вот ссылка, что мне помогла https://vertex-academy.com/tutorials/ru/filewriter-i-filereader/ а вот остальные требования я все никак не мог понять, не проходило у меня, поток зависал, пришлось в комменты лезть. Получается я как то неправильно понял условия задачи, я сделал у класса ReadFileThread implements ReadFileInterface, потом у ReadFileInterface implements Runnable. А надо было ReadFileThread extends Thread implements ReadFileInterface и потом все получилось
Павел20 уровень, Санкт-Петербург
22 мая, 18:19
а подскажите что это значит? 3.1. Метод setFileName должен устанавливать имя файла, из которого будет читаться содержимое. вообще не понятно, не, ну то что это сеттер ясно, но как установить? и как из него должно считываться содержимое в тот момент когда у нас нет доступа к статическому блоку инициализации...
static {
   try
   {
       BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

       firstFileName = reader.readLine();
       secondFileName = reader.readLine();

       FileInputStream one = new FileInputStream(firstFileName);
       FileInputStream two = new FileInputStream(secondFileName);
   }
   catch (Exception e) {}
}
этот блок же у нас в классе солюшен да должен быть?
Yerzhan20 уровень
19 июня, 19:16
1. в методе setFileName: this.fullFileName = fullFileName; При этом конечно в классе ReadFileThread объявляешь приватную переменную fullFileName. 2. статический блок правильный и должен быть в солюшн, но без этого FileInputStream one = new FileInputStream(firstFileName); FileInputStream two = new FileInputStream(secondFileName); считываешь имена двух файлов и присваиваешь соответственно переменным, что ты и сделал.
Александр19 уровень, Санкт-Петербург
14 мая, 17:37
4 попытки из-за невнимательного чтения условия. Положил логику чтения файла не в run(), а в getFileContent() и вызывал последний из run(), ещё удивился, отчего у меня 2 раза всё выводится))
Алексей19 уровень, Новосибирск
20 июня, 14:17
Похоже половина народа так делает
Intoxikot22 уровень, Челябинск
13 мая, 18:12
Решил с 10-ой попытки. Хотя изначально все делал в Idea и результат получался без проблем. Долго не мог понять в чем дело, уже хотел винить во всем валидатор Но не тут-то было! Оказывается, я спутал методы run() и start() Будьте внимательней, друзья