Когда вы пишете в файловый поток (т.е. делаете Write) - данные не сразу попадают в файловую систему (тобишь в тот файл который вы указали в создании потока). Flush собственно говорит "я закончил, можно записать все это на жесткий". Очищает собственно он именно те внутренние ресурсы-буферы, в которых хранились данные между write и ФС. Это все скрыто от программиста и по факту в том то и смысл фреймворка - вам не надо об этом думать.