Czy musimy zamknąć InputStream w Javie?
Czy musimy zamknąć InputStream w Javie?

Wideo: Czy musimy zamknąć InputStream w Javie?

Wideo: Czy musimy zamknąć InputStream w Javie?
Wideo: Java File Input/Output - It's Way Easier Than You Think 2024, Może
Anonim

2 odpowiedzi. Ty muszę zamknąć? ten strumień wejściowy , ponieważ strumień zwrócony przez wspomnianą metodę to w rzeczywistości FileInputStream lub inna podklasa Strumień wejściowy który posiada uchwyt na plik. Jeśli ty robić nie blisko ten strumień ty mieć wyciek zasobów.

Mając to na uwadze, czy konieczne jest zamknięcie InputStream w Javie?

Ale strumień wejściowy s nigdy nie jest zamknięty. To jest samodzielny Jawa programów i jest kilka takich programów, w których Strumień wejściowy nigdy nie jest zamknięty. Zwykle plik zostanie zamknięty, gdy Strumień wejściowy obiekt jest zbierany bezużytecznie lub gdy program się kończy. Zwykle nie jest dobrym pomysłem pozostawianie takich rzeczy otwartych.

Dlaczego mielibyśmy zamykać strumienie w Javie? Jest ważne by zamknij strumienie , aby zwolnić deskryptor pliku przechowywany przez tę klasę jako jej ograniczony zasób i używany zarówno do połączenia z gniazdem, jak i obsługi plików. Poważny wyciek zasobów może również spowodować wyjątek deskryptora pliku.

Po drugie, czy muszę zamknąć FileInputStream?

Tak ty trzeba zamknąć strumień wejściowy, jeśli chcieć twoje zasoby systemowe zwolnione. FileInputStream . blisko () jest tym, co ty potrzebować . Ty też trzeba zamknąć () lub zakończ program.

Czy muszę zamknąć ByteArrayInputStream?

4 odpowiedzi. Nie musisz zamknij ByteArrayInputStream , w momencie, gdy nie ma do niego odniesienia żadna zmienna, garbage collector zwolni strumień i kilka bajtów (oczywiście zakładając, że nie ma do nich odniesienia gdzie indziej).

Zalecana: