调用read(byte[])
aFileInputStream
时,读取大小始终为 8k,即使byte[]
是指数级大。
如何增加每次调用返回的最大读取量?
请不要提出仅仅掩盖FileInputStream
.
更新:似乎没有真正的解决方案。但是,对于 1G 文件,我计算出系统上的方法调用开销约为 226uS。可以肯定地说,这不会以任何实际方式影响性能。
调用read(byte[])
aFileInputStream
时,读取大小始终为 8k,即使byte[]
是指数级大。
如何增加每次调用返回的最大读取量?
请不要提出仅仅掩盖FileInputStream
.
更新:似乎没有真正的解决方案。但是,对于 1G 文件,我计算出系统上的方法调用开销约为 226uS。可以肯定地说,这不会以任何实际方式影响性能。
将它包装在一个 BufferedInputStream 中,它允许您指定缓冲区大小。
您可以尝试使用 NIO 对文件进行内存映射,但我不确定 8K 的问题是什么。您可以将 8K 复制到更大的数组中,也可以使用返回的长度来调用
public int read(byte[] b,
int off,
int len)
throws IOException
off 是上次读取的返回值。
您看到的每次读取的大小可能是操作系统本身使用的缓冲区大小。因此,您可能必须在操作系统级别进行更改。你如何做到这一点将取决于系统。您可以在创建文件系统时指定块大小。传统上这对于 Unix 文件系统是可行的。尽管具有讽刺意味的是,我相信该功能用于为预期有许多小文件的文件系统提供更小的块。