If it's a file channel, mmap it.
If it's a file channel, mmap it. Otherwise treat like an InputStream
If it is a FileInputStream, get its channel so we can mmap it.
If it is a FileInputStream, get its channel so we can mmap it. Otherwise copy into a byte array.
File becomes a direct mapped byte buffer.
Mostly this is for unit testing
This is the only method that actually constructs the object.
This is the only method that actually constructs the object. The other methods just arrange to call this one.
The initialBitPos0b is mostly there for testing purposes - to create small unit tests that start with non-byte alignment and such.
Factory for creating this type of DataInputStream
Examines channels and input streams to see if they are associated to files. If so it memory maps the file.