java从自定义文件开头写入自定义字节数
如何从带有偏移量的输入流中读取数据,并将一定数量的字节写入输出流
例如,目标是从InputStream
跳过512字节,并使用512字节的偏移量将1024字节写入OutputStream
,但如果缓冲区本身被定义为4096
字节,则也要进行缓冲
你可以在下面搜索框中键入要查询的问题!
如何从带有偏移量的输入流中读取数据,并将一定数量的字节写入输出流
例如,目标是从InputStream
跳过512字节,并使用512字节的偏移量将1024字节写入OutputStream
,但如果缓冲区本身被定义为4096
字节,则也要进行缓冲
# 1 楼答案
使用一种称为自适应缓冲区的技术。例如,首先定义存储数据的字节数组,以及所需的缓冲区大小:
然后使用下面的代码,我现在将解释:
让我们把代码分解一下:
在这里,我们首先检查要写入的实际大小是否小于缓冲区本身。如果是,请将要从
RandomAccessFile
读取的最大字节数设置为文件大小,以便一次从磁盘读取文件如果所需的字节数大于缓冲区,只需使用缓冲区大小作为要读取的最大字节数
在这里,定义字节的整数、写入的数据量和剩余的写入数据量。然后,从
RandomAccessFile
读取并将字节存储在缓冲区中,一次读取的最大字节数为maxBuf
,这是我们根据文件大小和缓冲区大小定义的在这里,我们计算我们将要写入的字节数,以及传递后剩余的读取字节数
现在我们检查,如果剩余的读取字节数小于缓冲区,如果是,我们将下一次读取的最大字节数设置为剩余的读取字节数
在这里,我们执行对^{的实际写入
因此,这段代码将要做的是,从一个RandomAccessFile读取到一个
*OutputStream
特定数量的字节,并调整缓冲区,使其适应剩余的写入量、文件本身大小(如果数据量小于缓冲区),或预设缓冲区。这会在两个*Streams
之间产生一个恒定的缓冲数据流