2012-05-17 2 views
2

Я хотел бы использовать PrintWriter или PrintStream для записи форматированных строк в выходной поток (для которых я не контролирую создание). Однако при очистке базового OutputStream наблюдается большой удар производительности.Необходимо ли очищать PrintWriter/PrintStream?

Необходимо ли очищать PrintWriter/PrintStream.

Если мне нужно очистить PrintStream/PrintWriter; могу ли я сделать это, не смывая базовый OutputStream, или мне нужно создать «поток-защитник» OutputStream, чтобы обернуть базовый поток?

Чтобы попытаться быть немного яснее на этом я хочу реализовать

public void writeSomeString(OutputStream foo); 

Но этот метод может быть вызван несколько раз для одной и той же OutputStream (Foo). Каждый вызов должен будет создать собственный PrintWriter. Я знаю, что это уродливо, но я не контролирую интерфейс или создаю foo.

Я стараюсь избегать каждого метода, который необходимо сбросить foo, чтобы очистить собственный PrintWriter/PrintStream.

Так что я хочу:

public void writeSomeString(OutputStream foo) { 
    PrintStream s = new PrintStream(foo); 
    s.println("bar"); 
    // other code 
} 

Я хочу, чтобы полностью избежать этого метода промывочной foo

ответ

2

PrintWriter следует промыть в следующих условиях:

ServerSocket s = new ServerSocket(4444); 

Socket incoming = s.accept(); 

OutputStream output = s.getOutputStream(); 

PrintWriter pw = new PrintWriter(output,true); 

System.out.println(pw.write(new Scanner(System.in).nextLine())); 

второго параметра в конструкторе PrintWriter используется флеш, который принимает логический тип данных, нам нужно очистить данные, поэтому он бросается на консоли, даже если буфер не заполнен.

+0

Да, я думаю, мне придётся очистить его. Я буду обтекать входной поток, чтобы предотвратить его очистку от базового OutputStream. Благодарю. –

+0

Добро пожаловать! –

 Смежные вопросы

  • Нет связанных вопросов^_^