Java RandomAccessFile vs. DataInputStream for byte operations

file-io, java

Solution

If you are only doing sequential access, by themselves they are essentially equivalent; however a `DataInputStream` around a `BufferedInputStream` around a `FileInputStream` will be considerably more efficient than a `RandomAccessFile`.

Problem

I need to read bytes from a file. Is there a difference (e.g. efficiency, memory, runtime, complexity and inelegance of code) between using `RandomAccessFile` and using `DataInputStream`? The only method I use is readByte(). Similarly for the other direction, is there a difference between `RandomAccessFile` and `DataOutputStream` if all that is needed is writeByte()? (The fact that `RandomAccessFile` is bidirectional doesn't count, the reading and writing are not connected and cannot share it). Is there any other object that would better suit that kind of reading and writing?

Original source