用于字节操作的Java RandomAccessFile与DataInputStream

用于字节操作的Java RandomAccessFile与DataInputStream,java,file-io,Java,File Io,我需要从文件中读取字节。 使用RandomAccessFile和使用DataInputStream之间是否存在差异(例如,效率、内存、运行时间、代码复杂性和不美观) 我使用的唯一方法是readByte() 同样,对于另一个方向,如果只需要writeByte(),则RandomAccessFile和DataOutputStream之间是否存在差异 (事实上,RandomAccessFile是双向的,读取和写入未连接,无法共享) 还有其他对象更适合这种读写吗?DataInputStream/Data

我需要从文件中读取字节。
使用
RandomAccessFile
和使用
DataInputStream
之间是否存在差异(例如,效率、内存、运行时间、代码复杂性和不美观)

我使用的唯一方法是readByte()

同样,对于另一个方向,如果只需要writeByte(),则
RandomAccessFile
DataOutputStream
之间是否存在差异 (事实上,
RandomAccessFile
是双向的,读取和写入未连接,无法共享)


还有其他对象更适合这种读写吗?

DataInputStream/DataOutputStream
如果您只需要依次读写它,那么它完全可以

如果需要随机访问(如字节数组)-请使用
RandomAccessFile


我不认为它们之间在内存消耗等方面有任何显著的区别,因为它们只是JVM和OS之间的中介。

DataInputStream/DataOutputStream
如果您只需要依次读/写它就完全可以了

如果需要随机访问(如字节数组)-请使用
RandomAccessFile


我不认为它们在内存消耗等方面有什么显著的区别,因为它们只是JVM和OS之间的中介。

如果你只做顺序访问,它们本身本质上是等价的;然而,如果您仅进行顺序访问,则围绕
文件输入流
缓冲输入流
数据输入流
将比
随机访问文件
的效率要高得多,因为它们本身本质上是等效的;但是,围绕
FileInputStream
BufferedInputStream
DataInputStream
比围绕
RandomAccessFile
RandomAccessFile

要创建文件的DataInputStream,您需要创建FileInputStream,而RandomAccessFile可以直接(从路径字符串)创建。这不会影响效率吗?我不需要随机访问,但我不知道它是否真的更适合使用,或者有什么缺点。它不会影响效率。当您使用存储设备时,额外的几个字节或调用并不重要。这真是微不足道。用显微镜都看不到。要创建文件的DataInputStream,需要创建FileInputStream,而RandomAccessFile可以直接创建(从路径字符串)。这不会影响效率吗?我不需要随机访问,但我不知道它是否真的更适合使用,或者有什么缺点。它不会影响效率。当您使用存储设备时,额外的几个字节或调用并不重要。这真是微不足道。甚至用显微镜都看不到。这对我来说是非常违反直觉的,你能解释为什么吗?@Xenorose因为缓冲区。这对我来说是非常违反直觉的,你能解释为什么吗?@Xenorose因为缓冲区。