FileInputStream.read...和RandomAccessFile之间的区别

问题描述

我是随机文件访问的新手,我遇到了一个问题-据我了解, RandomAccessFile 类提供了用于读取/写入的随机访问文件。我可以使用 seek()方法移动到合适的位置并开始阅读或书写,但是在这种情况下并不重要。完全是随机访问吗?但是在 FileInputStream 中,我具有相同的功能

read(bute[] byte,int off,int len)

此方法为我提供了从某个特定位置阅读的信息。那么区别是什么呢? (我想,InputStream读取了所有文件,但是只是在关闭位置之前经过了所有符号,但这只是我的猜测)。

解决方法

查看read方法的文档: https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#read(byte[],%20int) 它指出off是“目标数组b中的起始偏移量”。因此,使用此调用,您可以从流中读取接下来的len个字节,并将它们放在内存缓冲区中的某个位置。这不允许您像随机访问文件的seek方法那样向前跳。

,

您提到的read方法 不允许您从任何特定位置阅读。它总是从流中的下一个“下一个”位置开始读取,并将读取的字节放入字节数组off中的off输出中的偏移量,而不是输入中的偏移量。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...