在FileInputStream
上調用read(byte[])
時,即使byte[]
指數規模較大,讀取大小始終爲8k。增加由Java FileInputStream使用的內部緩衝區大小
你如何增加每次調用返回的最大讀取量?
請不要建議的方法,僅僅口罩FileInputStream
的限制。
更新:似乎沒有成爲一個真正的解決了這一點。但是,我計算出我的系統上的方法調用開銷爲大約226uS,即1G文件。可以肯定的是,這不會以任何實際的方式影響性能。
在FileInputStream
上調用read(byte[])
時,即使byte[]
指數規模較大,讀取大小始終爲8k。增加由Java FileInputStream使用的內部緩衝區大小
你如何增加每次調用返回的最大讀取量?
請不要建議的方法,僅僅口罩FileInputStream
的限制。
更新:似乎沒有成爲一個真正的解決了這一點。但是,我計算出我的系統上的方法調用開銷爲大約226uS,即1G文件。可以肯定的是,這不會以任何實際的方式影響性能。
你可以嘗試內存映射使用NIO的文件,但我不知道有8K的問題是什麼。 您可以在8K複製到更大的陣列或使用返回的長度調用
public int read(byte[] b,
int off,
int len)
throws IOException
隨着關是從最後一次讀取的返回值。
每個的大小看你看可能是由操作系統本身使用的緩衝區大小。因此,您可能必須在操作系統級別進行更改。你如何做到這一點將取決於系統。您可能能夠在創建文件系統時指定塊大小。傳統上,Unix文件系統可能是這樣。雖然具有諷刺意味的是,我相信這個特性曾經被用來預計有很多小文件的文件系統有更小的塊。
是否包括手動使用[的BufferedInputStream](http://www.docjar.com/docs/api/java/io/BufferedInputStream.html)? – 2011-01-26 04:12:32