Would it be fair to assume that you want to take each byte from the file and represent it as eight digits which are either 0 or 1? If so then the BigInteger method toByteArray() looks like a pretty straightforward way to do that. Although if you want to treat the bytes as unsigned, you'll have to do some bit-fiddling before you give it to the BigInteger.
Just to clarify, let's try an example: Suppose the first byte you read from the file is 27 (as a decimal value). Then you want to convert it to an array of ints like [1, 1, 0, 1, 1]? Do I have that right?
I'm also curious why you want to avoid using strings or hexadecimal to make this conversion happen.
Mostly for speed, although I haven't tested the speed of conversions using Integer.toBinaryString, or the extra step of hex. I actually need the values as int, and assumed the extra step of using a string would introduce unneeded overhead. Correct me if I'm wrong.
You may be wrong, but I have no idea about how fast you need to do this operation or whether you've tested the speed of various alternatives. For example you might find that changing the size of the buffer you use for reading the file might make speed improvements which dwarf anything you might do by choosing various in-memory operations. So I can't say you're wrong. It's quite possible though.
If it were me I would just write some reasonable-looking code and then see whether I thought it was fast enough. I wouldn't optimize code I hadn't written yet.
I get the feeling that you don't really have a problem with this conversion, but if you still do then this thread would be the right place to ask about it. However if you come across new problems then a new thread would probably be better.
(The moderators can merge threads if they think it would be better, so don't worry about starting new threads.)