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?
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With