用于字节操作的Java RandomAccessFile与DataInputStream
我需要从文件中读取字节。
使用RandomAccessFile
和使用DataInputStream
之间是否存在差异(例如,效率,内存,运行时,复杂性和代码的不雅)?
我使用的唯一方法是readByte()。
同样,对于另一个方向,如果所需的全部是writeByte(),那么RandomAccessFile
和DataOutputStream
之间是否存在差异?
( RandomAccessFile
是双向的这一事实不计算,读取和写入没有连接,不能共享它)。
还有其他对象更适合那种阅读和写作吗?
如果您只是进行顺序访问,那么它们本身就是等价的; 但是,围绕FileInputStream
的BufferedInputStream
的DataInputStream
将比RandomAccessFile
高效得多。
如果你只需要连续读/写它, DataInputStream/DataOutputStream
就完全没了问题。
如果您需要随机访问(比如一个字节数组) – 请使用RandomAccessFile
。
我不认为它们在内存消耗等方面存在任何显着差异,因为它们只是JVM和OS之间的中介。