PrintWriter по существу предоставляет удобные методы для Writer.Если вам не нужен этот удобный метод - но вам нужно просто написать символы - тогда функционально вы можете использовать любой вариант Writer, который вы выберете, включая «raw» OutputStreamWriter.
Если вы пишете символыпо одному, и ваш сокетный поток не буферизуется, тогда было бы целесообразно поместить некоторую буферизацию где-нибудь, либо с помощью BufferedWriter, либо обернув BufferedOuputStream вокруг вашего необработанного выходного потока.Примером того, где вам обычно не нужно этого делать, является сервлет, где потоки, передаваемые вашему сервлету, обычно уже буферизированы.
PrintWriter также имеет «особенность» проглатывания исключений в методах записикоторый вы должны затем явно проверить с помощью checkError () [передает, кто на самом деле это делает, а кто просто предполагает, что запись прошла успешно ...].Это может или не может быть желательным ...