Подскажите пожалуйста, в чем может быть проблема? Или я чего - то недоглядел)
Данная фраза выводится в консоль, в файл тоже записывается.
Потоки закрыл.
package com.javarush.task.task19.task1915;
/*
1. Класс Solution должен содержать класс TestString.
2. Класс Solution должен содержать публичное статическое поле testString типа TestString, которое сразу проинициализировано.
3. Класс TestString должен содержать публичный void метод printSomething().
4. Метод printSomething() класса TestString должен выводить на экран строку "it's a text for testing".
5. В методе main(String[] args) программа должна считывать имена файлов с консоли (используй BufferedReader).
6. В методе main(String[] args) BufferedReader для считывания данных с консоли должен быть закрыт.
7. Метод main(String[] args) класса Solution должен создавать поток PrintStream (используй PrintStream c конструктором принимающим ByteArrayOutputStream).
8. Метод main(String[] args) класса Solution должен подменять и восстанавливать поток вывода в консоль объекта System.out.
9. Метод main(String[] args) класса Solution должен один раз вызвать метод printSomething() объекта testString.
10. Метод main(String[] args) класса Solution должен выводить и в консоль и в файл строку выведенную методом printSomething() (используй FileOutputStream).
11. Поток записи в файл (FileOutputStream) должен быть закрыт.
*/
import java.io.*;
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter file path : ");
String fileName = reader.readLine();
reader.close();
PrintStream consoleStream = System.out;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(outputStream);
System.setOut(printStream);
testString.printSomething();
System.setOut(consoleStream);
String text = outputStream.toString();
FileOutputStream fileOutputStream = new FileOutputStream(fileName);
fileOutputStream.write(outputStream.toByteArray());
System.out.println(text);
fileOutputStream.close();
}
public static class TestString {
public void printSomething() {
System.out.println("it's a text for testing");
}
}
}