Em Java, o flush()
método é usado em fluxos. Mas não entendo qual é o objetivo de usar esse método?
fin.flush();
diga-me algumas sugestões.
java
java-stream
flush
Venkat
fonte
fonte
Quando damos qualquer comando, os fluxos desse comando são armazenados no local da memória chamado buffer (um local de memória temporário) em nosso computador. Quando toda a localização da memória temporária está cheia, usamos flush (), que libera todos os fluxos de dados e os executa completamente e dá um novo espaço para novos fluxos no local temporário do buffer. -Espero que você entenda
fonte
BufferedOutputStream
,BufferedWriter
,ObjectOutputStream,
e asPrintXXX
classes. Oflush()
método de qualquer outro fluxo ouWriter
não faz nada.flush()
explicitamente não é necessário para aBufferedWriter
, contanto que você sejaclose()
o escritor.close()
executa um flush em si.close()
chamadasflush()
, portanto, chamar ambas é redundante ao usarFileWriter
sem buffer.Quando você grava dados em um fluxo, eles não são gravados imediatamente e são armazenados em buffer. Portanto, use
flush()
quando precisar ter certeza de que todos os seus dados do buffer estão gravados.Precisamos ter certeza de que todas as gravações são concluídas antes de fecharmos o fluxo, e é por isso que
flush()
é chamado no arquivo / gravador em bufferclose()
.Mas se você tiver um requisito para que todas as suas gravações sejam salvas a qualquer momento antes de fechar o fluxo, use
flush()
.fonte
FilterOutputStream
eFilterWriter
.Se o buffer estiver cheio, todas as strings nele armazenadas em buffer, elas serão salvas no disco. Buffers é usado para evitar grandes promoções! e sobrecarga.
Na classe BufferedWriter que é colocada nas bibliotecas java, há uma linha como:
livro de referência: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
páginas: 453
fonte
Os fluxos geralmente são acessados por threads que periodicamente esvaziam seu conteúdo e, por exemplo, exibem na tela, enviam para um soquete ou gravam em um arquivo. Isso é feito por razões de desempenho. Liberar um fluxo de saída significa que você deseja parar, aguardar a transferência completa do conteúdo para o destino e, em seguida, retomar a execução com o fluxo vazio e o conteúdo enviado.
fonte
Para problemas de desempenho, os primeiros dados devem ser gravados no buffer. Quando o buffer fica cheio, os dados são gravados na saída (arquivo, console etc.). Quando o buffer está parcialmente preenchido e você deseja enviá-lo para a saída (arquivo, console), é necessário chamar o método flush () manualmente para gravar o buffer parcialmente preenchido na saída (arquivo, console).
fonte