В чем различие OutputStreamWriter и FileWriter?

95
01 января 2022, 23:00

Честно гуглил. Нашел это: OutputStreamWriter vs FileWriter. В ответах говорится вообще о различиях XXXInputStream и XXXOutputStream(хоть это было очень полезно, но это не то, что мне нужно).
По второй ссылке это: Различия OutputStream, BufferedWriter и FileWriter. Тоже ответа я не нашел.

По сути:
Вот полный код класса:

public class FileWriter extends OutputStreamWriter {
    public FileWriter(String fileName) throws IOException {
        super(new FileOutputStream(fileName));
    }
    public FileWriter(String fileName, boolean append) throws IOException {
        super(new FileOutputStream(fileName, append));
    }
    public FileWriter(File file) throws IOException {
        super(new FileOutputStream(file));
    }
    public FileWriter(File file, boolean append) throws IOException {
        super(new FileOutputStream(file, append));
    }
    public FileWriter(FileDescriptor fd) {
        super(new FileOutputStream(fd));
    }
    public FileWriter(String fileName, Charset charset) throws IOException {
        super(new FileOutputStream(fileName), charset);
    }
    public FileWriter(String fileName, Charset charset, boolean append) throws IOException {
        super(new FileOutputStream(fileName, append), charset);
    }
    public FileWriter(File file, Charset charset) throws IOException {
        super(new FileOutputStream(file), charset);
    }
    public FileWriter(File file, Charset charset, boolean append) throws IOException {
        super(new FileOutputStream(file, append), charset);
    }
}

Он реализует абсолютно все конструкторы OutputStreamWriter. И не добавляет ничего нового. Я в замешательстве.

Answer 1

Это просто частный случай OutputStreamWriter для записи в файл. Такая обёртка.

Позволяет вам просто лишний раз не нагромождать ваш код вызовом конструктора FileOutputStream, просто его вызов инкапсулирован внутри FileWriterа

могло быть в вашем коде так:

new OutputStreamWriter(new FileOutputStream(file));

а будет так, короче, лаконичнее, понятнее:

new FileWriter(file);
READ ALSO
Как сделать расчет стоимости заказа?

Как сделать расчет стоимости заказа?

Имеется map с ценами <наименование, цена> и map с заказом <наименование, количество>Нужно рассчитать общую стоимость заказа

201
Как грамотно задать бэкграунд 3 блокам?

Как грамотно задать бэкграунд 3 блокам?

Есть 3 секции, я всегда задавал 1 div который покрывал 3 секции и задавал ему 1 бекграунд, правильной ли такой подход?

222
Как расположить блоки таким образом?

Как расположить блоки таким образом?

Как расположить блоки, как на фото?

132