Да, вы правы.
Я думаю, что в этом случае вы могли бы сделать намного короче (см. Также BufferedWriter )
BufferedWriter out = new BufferedWriter(new FileWriter("foo.out"));
или если вы хотите хорошийфункции печати:
PrintWriter out = new PrintWriter (new BufferedWriter (new FileWriter ("foo.out")));
Возможно, FileWriter
создает свою собственную упаковку, ноэтот класс будет знать, какой путь лучше всего.
В java Streams и Writers являются обертками, так что вы можете собирать их для своих собственных нужд (с помощью стекирования, как вы делаете).Классы не смотрят на какой тип потока / устройства записи они укладываются.В вашем случае наличие нескольких буферов будет означать, что у вас фактически есть два буфера в двух разных классах.Это означает, что они будут занимать некоторую дополнительную память и, возможно, некоторую потерю производительности, но, скорее всего, вы никогда этого не заметите (потому что это только небольшая нагрузка по сравнению с другими факторами производительности).