![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
Есть код
если вывожу с помощью System.out.print или System.out.println , то все норм. Если вывожу с помощью PrintWriter, то print() не работает. Почему так? -------------------- <удалено администрацией форума> |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Добавьте в конце pw.flush() для сброса буфера.
-------------------- ![]() |
|||
|
||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
ААААААА я понял, println добавляет \n , а я поставил в PrintWriter(System.out, true); труе, а у принта /n не добавляется.
А что такое сброс буфера? -------------------- <удалено администрацией форума> |
|||
|
||||
| RebornCrusader |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: 2 Всего: 6 |
Когда вы пишете в поток, обычно идёт не непосредственный вывод, а накопление данных в каком-то буфере. Разумеется, содержимое буфера надо периодически "сваливать" (сбрасывать) в настоящий поток. Это происходит при достижении определённого объёма данных в буфере. Метод flush() используется для того, чтобы сказать "это всё, что я хочу вывести" - и произвести "незапланированный" сброс буфера. Реализации могут быть разные, но, как правило, вызов метода flush() гарантирует получение актуальных данных на выходе. При закрытии потока метод сброс буфера происходит автоматически (можно заглянуть в реализацию close() и увидеть там вызов flush()). В данном случае мы закрывать поток не имеем ни малейшего права - не мы же его открывали! Поэтому - просто flush(). Как вариант - да, можно использовать autoFlush. Тогда "слив" будет происходить автоматически. Но если делать вывод строчек (особенно маленьких) в большом количестве - лучше так не делать, эффективность предположительно должна упасть. В этом случае либо... 1) ...собираем "большую" строку перед выводом (используя StringBuilder или StringBuffer) 2) ...выключаем autoFlush, и делаем flush() только в конце цикла ;) --------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
|||
|
||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
Спасибо, все понятно .
-------------------- <удалено администрацией форума> |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |