Question

How to determine the size of Buffer, while using Buffered Input Stream for reading batch of files? Is it based on the File size?I'm using,

byte[] buf = new byte[4096];

If i increase the buffer size,it will read quickly?

Was it helpful?

Solution

The default, which is deliberately undocumented, is 8192 bytes. Unless you have a compelling reason to change it, don't change it.

OTHER TIPS

You can easily test it yourself, but it's not really a big issue. A few kilobytes is enough for the buffer, so you'll get good reading speeds.

If you profile your application and do realize that File IO is a performance bottleneck, there are ways to make it quicker, such as memorymapping a file.

What you show there is the "byte size" that you are reading into (the array).

If you are reading from a FileInputStream (i.e. non buffered), then changing that size will change the read size, yes.

This is different than the internal buffer used by BufferedInputStream. It doesn't have a getter but you can specify the size in the constructor and "remember it" from that I suppose. Default is 8K which may not be optimal.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top