Все методы ввода / вывода имеют байт как самую низкую степень детализации.Вы можете написать биты, но вы должны упаковать их в байты самостоятельно.Возможно, будет уместен однобайтовый буфер, который вы записываете в файл после его заполнения.
Также обратите внимание, что нет способа узнать длину файла в битах (вы не знаете, еслипоследний байт был "полным").Так что ваше приложение должно как-то об этом позаботиться.
Вы также можете найти Google для BitOutputStream, которых есть несколько, но не в библиотеках, которые очень распространены.Возможно, просто используйте один из них.
Наконец, файл, который вы будете создавать, не будет "текстовым" файлом, он будет очень двоичным (даже больше, чем обычно ...)