новый PrintWriter (новый BufferedWriter (новый PrintWriter (s.getOutputStream, true))) - PullRequest
3 голосов
/ 20 февраля 2012

Мне интересно, можно ли сделать

new PrintWriter(new BufferedWriter(new PrintWriter(s.getOutputStream, true))) 

в Java, где s это сокет? Поскольку невозможно создать BufferedWriter из выходного потока, я обернул выходной поток с помощью PrintWriter. Но я хочу буферизовать свои распечатки, поэтому я обертываю их с помощью BufferedWriter. Но в конце концов я хочу печатать с использованием printWriter, поэтому я снова обертываю его с помощью PrintWriter. Это законно в Java? Спасибо!

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Это законно, но неуклюже.Вместо этого вы можете буферизовать OutputStream:

new PrintWriter(new BufferedOutputStream(s.getOutputStream), true)

Также обратите внимание на реализацию буферизации new PrintWriter(OutputStream, boolean):

public PrintWriter(OutputStream out, boolean autoFlush) {
  this(new BufferedWriter(new OutputStreamWriter(out)), autoFlush);
}

уже есть!

1 голос
/ 20 февраля 2012

OutputStreamWriter - это класс, который вы ищете.Просто передайте ему поток и кодировку, например "UTF-8".

new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream(), encoding)), true) 
...