Разница между функцией 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(): он обычно закрывает поток, соединение, сокет.