The main differences:
BufferedInputStreambuffered, but FileInputStreamnot.
A BufferedInputStreamis read from another InputStream, but a is FileInputStreamreading from file 1 .
In practice, this means that every call FileInputStream.read()will make a system call (costly) ... while most calls BufferedInputStream.read()will return data from the buffer. In short, if you are doing small reads, adding BufferedInputStreama stream to the stack will improve performance.
For most purposes / use cases, this is all that matters.
There are a few more things (e.g. mark / reset / skip), but this is more of a specialist ...
javadocs... .
1 - , , - , 1) " " 2), . , , "". , , FileInputStream.