Я пишу программу, которая должна копировать из папки в папку большой, но небольшой объем данных (в диапазоне нескольких десятков фотографий сразу). Первоначально я использовал java.io.FileOutputStream
, чтобы просто читать в буфер и записывать, но потом я услышал о потенциальном увеличении производительности с помощью java.nio.FileChannel
.
У меня нет ресурсов для проведения серьезного контролируемого теста с данными, которые у меня есть, но, похоже, нет единого мнения о преимуществах каждого из них (кроме того, что FileChannel является потокобезопасным). Некоторые пользователи сообщают, что FileChannel
отлично подходит для файлов меньшего размера, другие сообщают о значительном увеличении скорости работы с файлами большего размера.
Мне интересно, знает ли кто-нибудь, в чем именно заключалась цель создания FileChannel
: было ли оно разработано для лучшей производительности? В каких случаях? И есть ли значительное повышение производительности для общих типов данных или различия, которые я должен ожидать увидеть, незначительны, потому что я не работаю с данными, которые достаточно специализированы?
РЕДАКТИРОВАТЬ: Предположим, что мои данные не должны быть потокобезопасными.