Преимущества использования flush () close () в потоках Android? - PullRequest
12 голосов
/ 18 ноября 2011

Мне известна общая идея, но я просто не уверен, оказывает ли она влияние, поскольку API Android заявляет следующее: «Очищает этот поток. Реализации этого метода должны гарантировать, что любые буферизованные данные записываются. Эта реализация ничего не делает. "

Эта реализация ничего не делает <- значит ли это, что это бесполезно делать, или я что-то упустил? </p>

1 Ответ

5 голосов
/ 18 ноября 2011

Если вы читаете расширенные документы на oracle

http://download.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html#flush()

Очищает этот выходной поток и принудительно записывает любые буферизованные выходные байты.Общий контракт сброса заключается в том, что вызов его указывает на то, что, если какие-либо ранее записанные байты были буферизованы реализацией выходного потока, такие байты должны быть немедленно записаны в их предполагаемое место назначения.

Метод flushOutputStream ничего не делает.

Означает, что сам метод ничего не делает, и он является абстрактным, поэтому любой базовый класс может реализовать свою собственную версию сбрасывающих потоков и заставлять их писать (не ожидая в очереди записи))

Но в любом случае, как указал Гийом , это хорошая практика, называть это в любом случае.Если позже вы замените свой поток другой реализацией, которая его использует, то вы пожалеете.

В зависимости от ОС, flush () выполняет только принудительную запись данных в ОС.

и

flush () ничего не делает с FileOutputStream.Это полезно только для буферизованных потоков.

и из javadoc close(), только чтобы заметить, что вам не нужно очищать поток, если вы закрываете его сразу после.

Закройте поток,сначала промывкаКогда поток будет закрыт, дальнейшие вызовы write () или flush () вызовут IOException.Однако закрытие ранее закрытого потока не имеет никакого эффекта.

related:
FileOutputStream.close действительно медленно работает при записи большого файла
flushв java.io.FileWriter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...