-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
92 lines (70 loc) · 4.05 KB
/
Solution.java
File metadata and controls
92 lines (70 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//The high priest therefore asked Jesus about his disciples, and about his teaching. (John 18:19)
package com.javarush.task.task19.task1915;
/*
Дублируем текст
*/
import java.io.*;
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) throws IOException {
BufferedReader conReader = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = conReader.readLine();
conReader.close();
PrintStream consoleStream = System.out;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(outputStream);
System.setOut(stream);
testString.printSomething();
//Возвращаем как было
System.setOut(consoleStream);
//Пишем в файл
FileOutputStream outFile = new FileOutputStream(fileName1);
outputStream.writeTo(outFile);
System.out.println(outputStream.toString());
outFile.close();
}
public static class TestString {
public void printSomething() {
System.out.println("it's a text for testing");
}
}
}
/*
Дублируем текст
Считай с консоли имя файла.
В методе main подмени объект System.out написанной тобой ридер-оберткой по аналогии с лекцией.
Твоя ридер-обертка должна дублировать вывод всего текста в файл, имя которого ты считал.
Вызови готовый метод printSomething(), воспользуйся testString.
Верни переменной System.out первоначальный поток.
Закрой поток файла.
Пример вывода на экран:
it's a text for testing
Пример тела файла:
it's a text for testing
Требования:
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) должен быть закрыт.
package com.javarush.task.task19.task1915;
*
Дублируем текст
*
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) {
}
public static class TestString {
public void printSomething() {
System.out.println("it's a text for testing");
}
}
}
*/