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

  • 9
  • Недоступна
1. Разберись, что делает программа. 2. В статическом блоке считай 2 имени файла firstFileName и secondFileName. 3. Внутри класса Solution создай нить public static ReadFileThread, которая реализует интерфейс ReadFileInterface (Подумай, что больше подходит - Thread или Runnable). 3.1. Метод setFileNa
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (122)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
notanord20 уровень, Минск
12 февраля, 09:54
метод getFileContent() должен возвращать содержимое объекта, в котором содержимое файла
Константин17 уровень
9 февраля, 20:08
Не делайте так: this.fullFileName="d://" + fileName; 14 попыток, блин.
Shamil18 уровень
3 февраля, 10:52
Ребята позвольте дать совет: я так смотрю в кометах большинство тут String используют в потоках, одно дело просто передать в поток или получит с потока, а другое когда изменяем внутри потока String, что очень не желательно за это могут дать по рукам. Используйте в потоках класс StringBuffer синхронизированный и потокобезопасный и не каких проверок на пустоту строки если не использовалась то всегда "".
Rif17 уровень
3 февраля, 18:34
Спасибо за совет. Я вот почитал лекцию, и оказывается String вообще не рекомендуется использовать при операции сложения строк. Отсюда возникает вопрос, а вообще зачем он нужен, если он такой покалеченный. А все потому что неизменяемый, т.е. при присвоении другого значения существующей строки ВСЕГДА создается новая. Неужели такой баг нельзя было исправить. Ведь если присваивается другое значение, то явно имеется в виду, что старое уже не нужно, но компилятор упорно захламляет память мусором.
Николай19 уровень
10 февраля, 13:01
Rif, Я полностью согласен с Шамилем, там, где возможны большие объемы изменения строки лучше использовать StringBuffer. Использование обычного String тоже вполне допустимо,особенно если речь о небольшом количестве изменения этой строки - соответственно будет и небольшой и понятный кусок кода. И это не баг, а такая фича. В лекциях ранее вроде объяснялось. И опять же, в Java сборщик мусора пройдет и поубивает неиспользуемые объекты.
Antony.Glim20 уровень
14 февраля, 10:18
Использую stringBuilder
Leo18 уровень, Москва
29 января, 09:39
не принято: убедись, что если метод run не выполнялся метод getFileContent возвращает пустую строку добавил флаг isThreadRun; имхо метод getFileContent должен возвращать контент файла, несмотря на то запущен поток или нет.
S3R3N1TY22 уровень, Санкт-Петербург
27 января, 22:17
Решил с 3-ей попытки, валидатор ругался "убедись что выводится пустая строка, если метод run() не запускался", строку иницилизировал как String s = ""; и тогда прошло. Не надо никаких проверок делать, просто в классе обьявил результирующий String s = ""; и если в run() не зашли то ее и выведем в итоге- просто пустую строку. Всего эту задачу решили 12657 учеников. Задача хорошая. В примере вывода указаны квадратные скобки, так вот они не нужны, могут сбить.
Вадим20 уровень, Одесса
5 января, 21:51
Реально напрягает в валидаторе: 1. Если я добавляю себе инфу для ввода данных,
System.out.println("Введите имя файла");
то все, валидатор умер. Хотя все правильно. 2. Когда случайно выбираешь какой то метода, какого нибудь класса, и IDEA вставляет импорт. Ты не обратишь внимание, а валидатор засчитывает ошибку и все... В принципе не очень важно, но неприятно
Мистер Холод19 уровень, Киев
14 января, 12:44
Тебе это мешает джаву учить?)
Вадим20 уровень, Одесса
14 января, 16:56
это бьет по самолюбию :)
Georgy18 уровень, Москва
29 декабря 2018, 12:09
Решил с 4 или 5 попытки, все выводит правильно, а валидатор в своем последнем пункте ругается "должно быть выведено 2 строки". Оказывается я забыл убрать лишние "введите путь к файлу 1" и "Введите путь к файлу 2". Кстати, пока искал несуществующую ошибку, переписал обход коллекции строк, вместо цикла тупо добавил
String oneLine = String.join(" ", myArrayList);
не забывайте про такое удобство :)
Игорь22 уровень, Нижний Новгород
27 декабря 2018, 15:16
Три раза заходил на решение задачи. И первые два из них заканчивались тем, что когда уже сам переставал понимать, что я тут понаписал, обнулял прогресс и начинал заново. В итоге третий заход - валидатор принял с первой попытки. В общем суть такова, что здесь действует то же принцип, что и у сисадминов - прежде чем бежать что-то делать руками (в нашем случае писать код), сядь с ручкой и бумажкой - и спокойно обдумай что надо сделать))
Prokofieva22 уровень, Харьков
20 декабря 2018, 22:48
да уж, не самая простая задачка. Дольше всего думала над пунктом '3.1. Метод setFileName должен устанавливать имя файла, из которого будет читаться содержимое.' все считываемые байты я записывала в ArrayList<String> values. А что бы все корректно считалось и удовлетворило валидатор переопределила toString():
@Override
       public String toString() {
           String listString = String.join(" ", values);
           return listString;
       }
Taras Belosvetov18 уровень, Киев
29 января, 13:39
зачем так сложно?
private String fullFilename;
        @Override
        public void setFileName(String fullFileName) {
            this.fullFilename = fullFileName;
        }
Pavlic Morozov (pashok09i)25 уровень, Екатеринбург
9 декабря 2018, 14:53
1 попытка - не принято: убедись, что если метод run не выполнялся метод getFileContent возвращает пустую строку. ок. добавим проверку. 2 попытка - не принято: убедись что в выводе метода getFileContent нет ничего лишнего. квадратные скобки.delete(). Но в примере вывода строки в квадратных скобках! 3 попытка принято Собственно вопрос, где прописаны данные требования?
Yuliya Malykh27 уровень
16 декабря 2018, 03:07
Как же добавить эту проверку, что у run не выполнялся метод getFileContent?
Pavlic Morozov (pashok09i)25 уровень, Екатеринбург
16 декабря 2018, 06:59
if (out == null) return ""; else return out.trim() ;
Pavlic Morozov (pashok09i)25 уровень, Екатеринбург
16 декабря 2018, 07:02
думаю еще можно сразу проинициализировать строковую переменную out = "", а не null, но я не пробовал, можете попробовать и отписаться
Yuliya Malykh27 уровень
16 декабря 2018, 18:19
Спасибо огромное! Помогло. Как и в случае с out = null, out = "" тоже принимается валидатором. Ну и задачка, конечно...
Леонид23 уровень, Москва
23 января, 20:25
Можно out = "". И проверок не надо