Разница между функцией flush и close в случае файлового ввода в java
Мне нужно знать, что такое точная разница между функцией flush и close в Java?
А Когда данные записываются в файл во время записи файла?
Просьба привести один пример
Ответы
Ответ 1
flush() записывает содержимое буфера в пункт назначения и делает буфер пустым для хранения дополнительных данных, но он не закрывает поток постоянно. Это означает, что вы все равно можете записать еще несколько данных в поток.
Но close() закрывает поток постоянно. Если вы хотите записать некоторые данные дальше, вам нужно снова открыть поток и добавить данные к существующим.
Ответ 2
flush()
просто следит за тем, чтобы любые буферизованные данные записывались на диск (в данном случае - в более общем плане, сбрасывались через любой канал IO, который вы используете). После этого вы можете писать в поток (или записывать).
close()
очищает данные и указывает, что данных больше нет. Он закрывает любые дескрипторы файлов, сокеты или что угодно. Затем вы больше не можете писать в поток (или писатель).
Обратите внимание, что без вызовов данных flush()
все еще могут быть записаны в соответствующий канал ввода-вывода - это просто, что некоторые данные могут быть буферизованы.
close()
, как правило, вызывает также flush()
, но недавно мне было сказано, что в некоторых реализациях JDK любые исключения, возникающие при промывке как части закрытия, проглатываются: (
Ответ 3
flush()
очищает содержимое буфера до места назначения. И вы можете снова записать что-то в поток. close()
очищает содержимое до места назначения и закрывает поток. После close()
вы больше ничего не можете писать.
Ответ 4
flush()
. Чтобы очистить выходной поток, используйте метод void flush()
класса DataOutputStream
. Этот метод внутренне вызывает метод flush()
базового класса OutputStream
, который заставляет любые буферизованные выходные байты записываться в поток.
close()
: он обычно закрывает поток, соединение, сокет.
См. flush
и close
пример