Just got to know the difference. Although, sure I read this in college long back.
BufferedInputStream [Excerpt]: A
BufferedInputStream adds functionality to another input stream-namely, the ability to buffer the input and to support the
reset methods. When the
BufferedInputStream is created, an internal buffer array is created. As bytes from the stream are read or skipped, the internal buffer is refilled as necessary from the contained input stream, many bytes at a time. The
mark operation remembers a point in the input stream and the
reset operation causes all the bytes read since the most recent
mark operation to be reread before new bytes are taken from the contained input stream.
InputStream [Excerpt]: This abstract class is the superclass of all classes representing an input stream of bytes. Applications that need to define a subclass of
InputStream must always provide a method that returns the next byte of input.
BufferedInputStream is always faster than InputStream because it pre-buffers the bytes and thus will not block for long.