Подтвердить что ты не робот

Разница между функцией flush и close в случае файлового ввода в java

Мне нужно знать, что такое точная разница между функцией flush и close в Java?

А Когда данные записываются в файл во время записи файла?

Просьба привести один пример

4b9b3361

Ответ 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 пример