Наименьшая единица данных, которую поддерживает Java, - это байт 8 бит. Таким образом, наименьший файл, который вы можете написать с помощью Java, в котором хранится 20 бит информации, имеет размер 24 бита (3 байта).
Существует также тот факт, что базовые файловые системы, поддерживаемые большинством операционных систем, не поддерживают файлразмеры произвольного размера в битах.
Однако, если вы имеете в виду, если возможно иметь поток данных, который семантически представляет собой последовательность из 20-битных сегментов, уверен, что это возможно. Вам просто нужно сдвинуть биты данных, чтобы использовать методы, которые записывают 8, 16 или 32 бита.
Например, 2 сегмента по 20 битов могут быть записаны с 5 байтами, где первые 2 байта содержат 16 битовпервый сегмент, средний байт содержит оставшиеся 4 бита первого сегмента и первые 4 бита 2-го сегмента, а последние 2 байта содержат оставшиеся 16 бит 2-го сегмента:
|--------------------------------------------|
| 1st 20 bit segment | 2nd 20 bit segment |
|--------------------------------------------|
| byte1 | byte2 | byte3 | byte4 | byte5 |
|--------------------------------------------|