W Javie flush()
metoda jest używana w strumieniach. Ale nie rozumiem, jaki jest cel stosowania tej metody?
fin.flush();
powiedz mi kilka sugestii.
java
java-stream
flush
Venkat
źródło
źródło
Kiedy wydajemy dowolne polecenie, strumienie tego polecenia są przechowywane w lokalizacji pamięci zwanej buforem (tymczasowa lokalizacja pamięci) w naszym komputerze. Gdy cała tymczasowa lokalizacja pamięci jest pełna, używamy flush (), która opróżnia wszystkie strumienie danych i wykonuje je w całości oraz daje nowe miejsce nowym strumieniom w tymczasowej lokalizacji bufora. -Mam nadzieję, że zrozumiesz
źródło
BufferedOutputStream
,BufferedWriter
,ObjectOutputStream,
iPrintXXX
klas.flush()
Metoda jakiegokolwiek innego strumienia lubWriter
nic nie robi.flush()
jawne nie jest wymagane dla aBufferedWriter
, o ile jesteśclose()
autorem.close()
sam wykonuje rzut.close()
wywołaniaflush()
, więc wywołanie obu jest zbędne, gdy używaszFileWriter
bez bufora.Dane zapisane w strumieniu nie są zapisywane natychmiast i są buforowane. Dlatego używaj,
flush()
gdy chcesz mieć pewność, że wszystkie dane z bufora są zapisane.Musimy mieć pewność, że wszystkie zapisy zostały zakończone, zanim zamkniemy strumień, i dlatego
flush()
jest wywoływana w zapisie pliku / buforowanymclose()
.Ale jeśli chcesz, aby wszystkie twoje zapisy były zapisywane w dowolnym momencie przed zamknięciem strumienia, użyj
flush()
.źródło
FilterOutputStream
iFilterWriter
.Jeśli bufor jest pełny, wszystkie buforowane w nim łańcuchy zostaną zapisane na dysku. Bufory służą do unikania wielkich okazji! i nad głową.
W klasie BufferedWriter, która jest umieszczona w bibliotekach java, znajduje się jeden wiersz, taki jak:
książka referencyjna: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
strony: 453
źródło
Strumienie są często dostępne przez wątki, które okresowo opróżniają swoją zawartość i na przykład wyświetlają ją na ekranie, wysyłają do gniazda lub zapisują do pliku. Odbywa się to ze względu na wydajność. Opróżnianie strumienia wyjściowego oznacza, że chcesz zatrzymać się, poczekać, aż zawartość strumienia zostanie całkowicie przesłana do miejsca docelowego, a następnie wznowić wykonywanie z pustym strumieniem i wysłaną zawartością.
źródło
W przypadku problemów z wydajnością pierwsze dane mają zostać zapisane w buforze. Gdy bufor się zapełni, dane są zapisywane na wyjściu (plik, konsola itp.). Gdy bufor jest częściowo zapełniony i chcesz wysłać go na wyjście (plik, konsola), musisz ręcznie wywołać metodę flush () w celu zapisania częściowo wypełnionego bufora na wyjście (plik, konsola).
źródło