Данные дублируются и в файл и на консоль. Проверял так:
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader("/infile.txt"));
FileConsoleWriter writer = new FileConsoleWriter("/outfile.txt");
while (reader.ready()) {
writer.write(reader.readLine());
writer.write(System.lineSeparator());
}
reader.close();
writer.close();
}
package com.javarush.task.task19.task1917;
/*
Свой FileWriter
*/
import java.io.*;
public class FileConsoleWriter {
private FileWriter fileWriter;
private BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
}
public FileConsoleWriter(File file) throws IOException { this.fileWriter = new FileWriter(file); }
public FileConsoleWriter(File file, boolean append) throws IOException { this.fileWriter = new FileWriter(file, append); }
public FileConsoleWriter(FileDescriptor fd) { this.fileWriter = new FileWriter(fd); }
public FileConsoleWriter(String fileName) throws IOException { this.fileWriter = new FileWriter(fileName); }
public FileConsoleWriter(String fileName, boolean append) throws IOException { this.fileWriter = new FileWriter(fileName, append); }
public void write(char[] cbuf, int off, int len) throws IOException {
fileWriter.write(cbuf, off, len);
bufferedWriter.write(cbuf, off, len);
}
public void write(int c) throws IOException {
fileWriter.write(c);
bufferedWriter.write(c);
}
public void write(String str) throws IOException {
fileWriter.write(str);
bufferedWriter.write(str);
}
public void write(String str, int off, int len) throws IOException {
fileWriter.write(str, off, len);
bufferedWriter.write(str, off, len);
}
public void write(char[] cbuf) throws IOException {
fileWriter.write(cbuf);
bufferedWriter.write(cbuf);
}
public void close() throws IOException {
fileWriter.close();
bufferedWriter.close();
}
}