本地文件中的 RandomAccessFile.read() 是否保证将读取确切的字节数?

Does RandomAccessFile.read() from local file guarantee that exact number of bytes will be read?

目前我的代码工作正常,但我是否应该将 raf.read() 替换为 raf.readFully() 以确保读取所有字节?

            raf = new RandomAccessFile(doc.getFilePath()+"/"+doc.getName(),"r");
            raf.seek((partNumber-1)*partitionSize);
            byte[] buf = new byte[partitionSize];
            int bytesRead = raf.read(buf); //ensure myself by readFully or not?
            System.out.println("expected="+partitionSize+" readed="+bytesRead);

我的建议如下 - 当从文件一等本地资源读取时,无论如何调用 read() 都会 return 指定的字节数。 readFully 在从网络流中读取时有用,当 read() 不能保证读取所需的字节数时。正确吗?

因为它在文档中 RandomAccessFile#read(byte[] b)

Returns: the total number of bytes read into the buffer, or -1 if there is no more data because the end of this file has been reached.

read 方法不保证读取所有请求的字节(即使它们存在于文件中)。实际行为将取决于底层 OS 和文件系统。例如,当由 NFS 支持时,您更有可能无法在一次调用中获得所有请求的字节。

如果要保证在一次调用中获取所有请求的字节,则必须使用readFully