Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java RandomAccessFile vs. DataInputStream for byte operations

Tags:

java

file-io

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?

like image 547
Eran Avatar asked Nov 01 '25 13:11

Eran


2 Answers

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.

like image 60
user207421 Avatar answered Nov 03 '25 03:11

user207421


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.

like image 43
Eugene Retunsky Avatar answered Nov 03 '25 02:11

Eugene Retunsky



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!