Java RandomAccessFile vs. DataInputStream for byte operations

筅森魡賤 提交于 2019-11-28 09:45:58

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!