问题
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?
回答1:
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
.
回答2:
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.
来源:https://stackoverflow.com/questions/10132749/java-randomaccessfile-vs-datainputstream-for-byte-operations