Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Stream, где лучше делать close() 
:(
    Опции темы
maximb
Дата 2.12.2005, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 48
Регистрация: 23.5.2005
Где: Украина, г.Симфер ополь

Репутация: 4
Всего: 6



Увидел код где поток закрывается внутри метода в который он передается.

Поэтому возник вопрос.
Какой из этих примеров правельный ?

Код
public static void main(String[] args)
{
      InputStream stream = new FileInputStream(args[0]);
      read(stream);
}

private static void read(InputStream stream)
{
     // ..... какие-то действия с потоком
     stream.close();
}


Код
public static void main(String[] args)
{
      InputStream stream = new FileInputStream(args[0]);
      read(stream);
      stream.close();
}

private static void read(InputStream stream)
{
     // ..... какие-то действия с потоком
}

Добавлено @ 17:44
Мне кажется что где открыл там и закрыл.
Это правильно.

Это сообщение отредактировал(а) Lamer George - 2.12.2005, 19:25
PM ICQ   Вверх
batigoal
Дата 2.12.2005, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Конечно, лучше выполнять парные операции на одном уровне. В противном случае программист, который будет использовать твой код, не догадается, что поток закрывается где-то в другом месте, и нарвется на ошибку.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Alexandr87
Дата 3.12.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 9
Всего: 39



Я гдет прочитал, что закрывать потоки вообще не нужно, за редким исключением, поток - этоже класс и собственно сборщик его сам пригребет, перед этим закрыв.
PM Jabber   Вверх
LSD
Дата 3.12.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Alexandr87 @ 3.12.2005, 16:35)
Я гдет прочитал, что закрывать потоки вообще не нужно, за редким исключением, поток - этоже класс и собственно сборщик его сам пригребет, перед этим закрыв.

Если это была книжка то выброси ее, если сайт никогда туда больше не ходи.

Освобождение внешнего ресурса из метода finalize() это так сказать запасной вариант на случай нерадивого разработчика, но не норма. Если до завершения приложения объект не будет собран сборщиком, то метод finalize() не будет вызван (при выходе он не вызывается). Не закрывая ресурс вовремя ты вызываешь их перерасход, если например при работе с СУБД не закрывать ResultSet, то можно очень быстро нарваться на too many open cursors exception. Открытый файл нельзя удалить, пока он не будет закрыт. После закрытия сокета, еще минут 10 нельзя использовать тот же порт что он занимал.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Alexandr87
Дата 3.12.2005, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

Репутация: 9
Всего: 39



Приму к сведению
PM Jabber   Вверх
batigoal
Дата 3.12.2005, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(LSD @ 3.12.2005, 19:02)
После закрытия сокета, еще минут 10 нельзя использовать тот же порт что он занимал.

А почему? Это задержка вызвана свойствами Java-реализации, или особенностми ОСей?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 3.12.2005, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Lamer @ 3.12.2005, 22:57)
А почему? Это задержка вызвана свойствами Java-реализации, или особенностми ОСей?

Особенности протокола, здесь это обсуждается более подробно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.