Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / OutputStream & flush / 9 сообщений из 9, страница 1 из 1
16.03.2006, 15:14
    #33605661
NewBit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
Объясните мне плиз, зачем нужен метод flush у OutputStream.
Вот что пишет SDK:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
flush

 public   void  flush()
            throws  IOException

    Flushes  this  output stream and forces any buffered output bytes to be written out. The general contract of flush is that calling it is an indication that,  if  any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination.

    The flush method of OutputStream does nothing.

     Throws :
        IOException -  if  an I/O error occurs.


Т.е. его предназначение ясно - но написано же, что у OutputStream он ничего не делает.
А раз он ничего не делает, какой от него толк ? Как он может выкинуть эксепшен ничего не делая ?
Более того, при вызове его он действительно сбрасывает буфер ....
...
Рейтинг: 0 / 0
16.03.2006, 16:44
    #33606002
далай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
а это, батенька, полиморфизм!
...
Рейтинг: 0 / 0
16.03.2006, 16:45
    #33606009
далай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
всмысле, что это фактически абстрактный метод, но его не сделали абстрактным, а сделали пустым, чтобы тем наследникам, которым нечего флашить, не приходилось его описывать лишний раз.

я так думаю.
...
Рейтинг: 0 / 0
16.03.2006, 16:50
    #33606028
далай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
NewBitБолее того, при вызове его он действительно сбрасывает буфер ....не может такво быть

это вы из-за этого полиморфизма не заметили, что вызываете флаш у объекта другогого класса
...
Рейтинг: 0 / 0
16.03.2006, 17:22
    #33606152
NewBit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
далайвсмысле, что это фактически абстрактный метод, но его не сделали абстрактным, а сделали пустым, чтобы тем наследникам, которым нечего флашить, не приходилось его описывать лишний раз.

я так думаю.

Т.е. если я Вас правильно понял те наследники OutputStream, которым есть что флашить, при переопределении этого метода добавляют пута логику сброса буфера ?
...
Рейтинг: 0 / 0
16.03.2006, 17:57
    #33606273
NewBit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
Дело в том, что рассматривая работу сокетов, в частности стандратный вызов: socket.getOutputStream(): OutputStream
(socket - объект класса Socket)

я в итоге вижу такой код - здесь детали опущены (взят из java.net.Socket и далее по ссылкам)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...

    protected  OutputStream getOutputStream()  throws  IOException
   {
      if  (out ==  null )
        out =  new  SocketOutputStream();
      return  out;
   }
...


класс SocketOutputStream расширяет FileOutputStream и метод flash не переопределяет.
класс FileOutputStream расширяет OutputStream и снова этот метод не переопределяет !


Т.е в итоге имеем что flush - ничего не сбрасывает.
Хотя реально - буфер сбрасыватся
...
Рейтинг: 0 / 0
16.03.2006, 18:04
    #33606297
далай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
вы что, исходники смотрите?
не, я не настолько умный.
а ведь там ведь в конце концов нативная часть должна быть. вы ее тоже смотрите?
...
Рейтинг: 0 / 0
16.03.2006, 18:15
    #33606336
NewBit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
далайвы что, исходники смотрите?
не, я не настолько умный.
а ведь там ведь в конце концов нативная часть должна быть. вы ее тоже смотрите?

Нет я не настолько умный, что б смотреть еще и нативную часть ;-)
Хотя, если б она там была - я б на этом остановился ;-)
Но я не нашел для flush нативной
...
Рейтинг: 0 / 0
16.03.2006, 18:18
    #33606343
далай
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OutputStream & flush
во! надо пойти и спросить у Гослинга : а как тудыть начинка-то попадаить? :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / OutputStream & flush / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]