Согласно документам java, вызов close() в любом java.io Streams автоматически вызывает flush(). Но я видел во многих примерах, даже в производственных кодах, что разработчики явно использовали flush() непосредственно перед close(). В каких условиях нам нужно использовать flush() непосредственно перед close()?