问题描述
我是随机文件访问的新手,我遇到了一个问题-据我了解, 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
是输出中的偏移量,而不是输入中的偏移量。