AmigoOutputStream

  • 10
  • Недоступна
1 Измени класс AmigoOutputStream так, чтобы он стал Wrapper-ом для класса FileOutputStream. Используй наследование. 2 При вызове метода close() должны выполняться следующая последовательность действий: 2.1 Вызвать метод flush(). 2.2 Записать в конец файла фразу "JavaRush © All rights reserved.",
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (291)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
ttrack3
Уровень 29
19 ноября, 09:31
Валидатор ругается на бесконечный цикл , хотя моё решение идентично правильному , за исключение названия для поля FileOutStream , где он цикл увидел , не понимаю
Юлия
Уровень 29
14 ноября, 11:15
условие недописано до конца: валидатор хочет, чтобы ВСЕ используемые методы были переопределены предварительно.
artbunny
Уровень 19
29 октября, 18:17
Пожалуй в этой задаче очень сильно смущает следующее: Метод main в ходе обработки всех объектов классов и оберток обращается к некоему файлу, путь на который указан в переменной fileName.
public static void main(String[] args) throws FileNotFoundException {
        new AmigoOutputStream(new FileOutputStream(fileName));
    }
Тем не менее класс AmigoOutputStream, наследующийся от FileOutputStream, получает конструктор, в котором насильно передаётся ровно этот же путь fileName.
public AmigoOutputStream(FileOutputStream fos) throws FileNotFoundException {
        super(fileName);
        this.fileOutputStream = fos;
    }
То есть, если мы заведем в main другой путь (например fileName1234), то конструктор все равно будет принудительно обращаться к fileName.
Sidroded Работает в Пивоварне
18 ноября, 15:31
Кому-то просто было впадло делать универсольное решение. А универсальным пусь стает если ввести следующее.
super(fos.toString());
Максим
Уровень 20
24 октября, 18:05
Надо либо в решении append добавить, либо в условии убрать требование добавлять в конец.
Stas Azin Младший помощник дворника в Улица
10 октября, 20:29
Как к методу close() то обратиться? Сделал правильно, но проверить сам не смог. Другие классы не видят эти методы, а мэйн статический, из других методов ошибка...
Sidroded Работает в Пивоварне
18 ноября, 15:34
Обратится нужно к передаваемому обьекту класса. Ты в конструкторе получаешь обьект класса. Ему присваевашь ссылку внутри своего класса. И к у нее вызываешь метод close().
Ivan
Уровень 35
2 октября, 14:57
Исправьте! 2.2 Записать в конец файла фразу "JavaRush © All rights reserved.", используй метод getBytes(). ненужно ничего дописывать, нужно записать в файл строку "JavaRush © All rights reserved." Редактора лишите премии за его "работу"
FutureDev Java Student в Home Corporation ®
14 сентября, 18:16
Эм, а где в условии сказано, что нужно переопределить все три варианта метода write()? Зачем нам все три, если для решения задачи нужен только write(byte[] b)? И почему без этого правильное решение не принимается? Как много вопросов... как мало ответов....
Kidchai
Уровень 35
9 августа, 21:44
Абсолютно сбивает с толку условие, требующее записать строку в конец файла. На деле же в правильном решении обычное перезаписывание этой строки
An N
Уровень 34
7 августа, 09:15
Запускаю в IDEA правильное решение и получаю пустой файл размером 0 байт. Куда делась сторока "JavaRush © All rights reserved." ?
Mikhail Khanov
Уровень 19
17 августа, 21:49
В правильном решении никто не вызывал метод close(), поэтому и строка не записалась.
Khaweez
Уровень 39
28 июня, 09:03
Что будет, если мы в аргумент конструктора AmigoOutputStream передадим не вызов конструктора родителя, а уже инициализированный объект FileOutputStream?
FileOutputStream outputStream = new FileOutputStream(someFileName);
AmigoOuputStream amigoOutput = new AmigoOutputStream(outputStream);
Конструктор AOS все равно ведь вызовет super(fileName). Сколько у нас будет существовать объектов FileOutputStream? И куда в итоге будет писать amigoOutput: в fileName из статического поля или в someFileName outputStream'а?