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
DataInputStream/DataOutputStream is totally fine if you only need to read/write it sequentally.
If you need random access (like to an array of bytes) - use RandomAccessFile.
I don't think there is any significant difference between them in terms of memory consumption etc. as they are just mediators between JVM and OS.