Я хотел бы прояснить и провести некоторые параллели между FileOutputStream и FileChannel прямо сейчас.
Итак, во-первых, кажется, что наиболее эффективный способ написания файла со стандартным Java io - этоиспользовать FileOutputStream, который обернут в BufferedOutputStream .Потому что он автоматически сбрасывается при переполнении внутреннего буфера.Удобно иметь возможность делать одиночные записи (одиночные байты, числа с плавающей запятой и т. Д.), А также массивы и не беспокоиться о скорости.Единственное, что вы никогда не должны забывать, это закрыть его (выполнить последний сброс).Преимущества использования оболочки BufferedOutputStream очевидны, и должно иметь для всех (я надеюсь).
Теперь о FileChannel. FileChannel имеет метод force, который эквивалентен сбросу в FileOutputStream, не так ли? И javadocs ясно говорит, что вы должны использовать его, чтобы убедиться, что ваши изменения были внесены в целевой файл.Но я не понимаю, когда и почему я должен использовать его, если нет оболочки "BufferedFileChannel". Другими словами, где буферизация для FileChannel?Это автоматически и скрыто в самом FileChannel как в BufferedOutputStream?Если нет, то с какой стати мне нужен метод force, так как форсировать нечего (все изменения уже применяются к файлу после использования метода write), и мне нужно самостоятельно выполнять буферизацию?