package com.javarush.test.level18.lesson08.task02;
import java.io.*;
/* Расширяем AmigoOutputStream
Используя шаблон проектирования Wrapper (Decorator) расширьте функциональность AmigoOutputStream
В классе QuestionFileOutputStream при вызове метода close() должна быть реализована следующая функциональность:
1. Вывести в консоль фразу [Вы действительно хотите закрыть поток? Д/Н]
2. Считайте строку
3. Если считанная строка равна [Д], то закрыть поток
4. Если считанная строка не равна [Д], то не закрывать поток
*/
public class QuestionFileOutputStream implements AmigoOutputStream {
private AmigoOutputStream amigoOutputStream;
public QuestionFileOutputStream(AmigoOutputStream amigoOutputStream){ //конструктор
this.amigoOutputStream = amigoOutputStream;
}
@Override
public void flush() throws IOException
{
amigoOutputStream.flush();
}
@Override
public void write(int b) throws IOException
{
amigoOutputStream.write(b);
}
@Override
public void write(byte[] b) throws IOException
{
amigoOutputStream.write(b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException
{
amigoOutputStream.write(b, off, len);
}
public void close() throws IOException
{
System.out.println("Вы действительно хотите закрыть поток? Д/Н");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String answer = reader.readLine();
if (answer.equals("Д")) amigoOutputStream.close();
}
}
package com.javarush.test.level18.lesson08.task02;
import java.io.IOException;
public interface AmigoOutputStream {
public void flush() throws IOException;
void write(int b) throws IOException;
void write(byte[] b) throws IOException;
void write(byte[] b, int off, int len) throws IOException;
void close() throws IOException;
}
Leave A Comment