Recentemente, eu estava aprendendo fluxos de IO e descobri que a função Flush () aparece sempre. Eu verifiquei sua função e as principais funções são as seguintes
//――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――�
Resposta geral e incorreta:
Os dados no buffer são salvos até que o buffer esteja cheio. Você também pode usar o método Flush para forçar os dados no buffer a ser escrito ou usar o método Close () para fechar o fluxo. Antes de fechar o fluxo, o fluxo de saída do buffer grava os dados do buffer ao mesmo tempo. Flash () e Close () forçam os dados a serem gravados, para que os dois resultados sejam iguais. Se você não escrever, descobrirá que não pode escrevê -lo com sucesso.
Em resposta à resposta acima, uma resposta precisa foi dada
O FileOutputStream herda o outputStream e não fornece a reescrita do método Flush (). Portanto, não importa quanto conteúdo escreva, ele passará diretamente no fluxo binário para a E/S do sistema operacional subjacente. Flush não tem efeito. As funções de fluxo de entrada e saída da série em buffer podem ser vistas a partir da palavra buffer que elas usam buffers. O aplicativo precisa se comunicar com o dispositivo toda vez que IO, o que é muito baixo. Portanto, para melhorar a eficiência, o buffer é gravado no buffer primeiro ao escrever para o dispositivo. Quando o buffer tiver dados suficientes, ele será gravado no dispositivo como um todo.
Use bufferxxxstream. O tamanho do buffer padrão é 8k. Ao ler, o buffer será preenchido (ou o arquivo é lido) o tempo todo. Ao escrever, o conteúdo será enviado ao buffer do kernel após o buffer estiver cheio (ou operação de descarga). O motivo da alta eficiência é evitar cair no kernel do sistema operacional para todas as leituras de bytes (esta é uma operação demorada). Para um código específico, verifique a API sozinho.
Também anexarei uma resposta de pergunta do Baidu.
Flush () significa forçar o conteúdo do buffer a ser escrito. Devido a certos mecanismos do sistema operacional, a fim de impedir a leitura e a escrita contínuas do disco, há um conceito de escrita tardia. (Cuidado para não se confundir com a atualização Fruit ()), é usado principalmente em IO, ou seja, limpa os dados do buffer. Geralmente, ao ler e escrever fluxos, os dados são lidos pela primeira vez na memória e depois gravados em um arquivo. Quando você lê os dados, isso não significa que seus dados foram gravados, porque ainda há uma parte dele que pode ser deixada no buffer de memória. Neste momento, se você ligar para o método Close () e fechar o fluxo de leitura e gravação, essa parte dos dados será perdida, para que você deva liberar () antes de fechar o fluxo de leitura e gravação. .
O mesmo acontece em um servidor da Web de rede. Para impedir que uma mensagem seja enviada após escrever um byte, existe um conceito de buffer, como uma área de memória de 64k, quando o buffer está cheio, ele é gravado no disco de uma só vez (ou enviado ao navegador do cliente).
O método de descarga é geralmente executado quando o programa grava é concluído. Em seguida, siga o método de fechamento. Por exemplo:
// Obtenha o fluxo de saída. Obviamente, depende do ambiente específico. PrintWriter out = util.getWriter (); out.println ("Outra algumas informações, talvez muito"); out.flush (); out.close ();Simplificando, o método Flush () é emitir todo o conteúdo armazenado na memória (saída em lote). Comumente usado, por exemplo, é um exemplo típico na classe FileWriter. Além de usar a saída Flush, a chamada final para o método de fechamento também será a saída do lote.
importar java.io.filewriter; importar java.io.ioException; public Classe A04 {public static void main (string args []) {FileWriter fw; Try {fw = new FileWriter ("c: //try.txt"); fw.write ("hello); // fw.close (); // Esta frase não é adicionada, o arquivo não pode ser gravado e o arquivo está em branco! System.out.println ("ok"); } catch (ioexception e) {// TODO GATO GENERADO AUTOMENTADO BLOCO E.PRINTSTACKTRACE (); }}}Resumir
O exposto acima é todo o conteúdo deste artigo sobre a função e os métodos de uso das funções de descarga no idioma Java. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!