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