如何获取给定范围内的文件字节?

Ton*_*ony 1 java arrays file

如何获取给定范围内的文件字节?文件可能非常大,因此将所有字节保留在内存中并不是一个好主意。我可以逐字节读取文件吗?读书这样正常吗?

Bul*_*aza 5

使用 a 打开文件RandomAccessFile,查找起始偏移量,定义缓冲区长度并完全读取缓冲区。该try-with-resources语句负责关闭RandomAccessFile.

public static byte[] readByteRange(String sourceFilePath, long startingOffset, int length) throws IOException
{
    try (RandomAccessFile randomAccessFile = new RandomAccessFile(sourceFilePath, "r"))
    {
        byte[] buffer = new byte[length];
        randomAccessFile.seek(startingOffset);
        randomAccessFile.readFully(buffer);

        return buffer;
    }
}
Run Code Online (Sandbox Code Playgroud)