| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Закрытие потоков |
| Автор: Java2 10.8.2006, 10:41 |
| Есть код: InputStreamReader iStreamReader = new InputStreamReader(inputStream) BufferedReader reader = new BufferedReader(iStreamReader); Если я сделаю reader.close();, то уже нет необходимости закрывать поток InputStreamReader и inputStream? Будут ли промежуточные потоки закрыты автоматически? Или если закрыть промежуточный поток inputStream, тогда всё остальное закроется само? |
| Автор: LSD 10.8.2006, 10:47 |
| При закрытии вышележащий поток сбрасывает буфер и закрывает нижележащий поток. Т.е. в твоем случае BufferedReader закроет InputStreamReader, а тот в свою очередь закроет InputStream. Вышележащие потоки не будут закрыты при закрытии нижележащего, будет просто выброшено IOException при попытке записи в поток. |
| Автор: skhilkov 10.8.2006, 10:51 |
| LSD... спасибо |
| Автор: UnicornMirage 10.8.2006, 11:04 |
| вопрос дополнения: тогда сбрасывать буфер у потока (flush()) необязательно перед закрытием? |
| Автор: Java2 10.8.2006, 12:01 |
| А в случае с закрытием сокета, можно закрыть только сам сокет, т.е. clientSocket.close(); либо закрыть всё, т.е.: output.close(); input.close(); clientSocket.close(); ? |
| Автор: LSD 10.8.2006, 12:24 |
| Можно закрыть, только сокет. Другое дело, что у сокета можно по отдельности закрывать Input и Output, и иногда это бывает нужно. |