java.io.BufferedInputStream read(byte[] b, int off, int len)

Description

On this document we will be showing a java example on how to use the read(byte[] b, int off, int len) method of BufferedInputStream Class. This method reads bytes from this byte-input stream into the specified byte array, starting at the given offset.

This method implements the general contract of the corresponding read method of the InputStream class. As an additional convenience, it attempts to read as many bytes as possible by repeatedly invoking the read method of the underlying stream. This iterated read continues until one of the following conditions becomes true:

  • The specified number of bytes have been read,
  • The read method of the underlying stream returns -1, indicating end-of-file, or
  • The available method of the underlying stream returns zero, indicating that further input requests would block.

If the first read on the underlying stream returns -1 to indicate end-of-file then this method returns -1. Otherwise this method returns the number of bytes actually read.

Subclasses of this class are encouraged, but not required, to attempt to read as many bytes as possible in the same fashion.

Override by:

  • read in class FilterInputStream

Throws:

  • IOException – if this input stream has been closed by invoking its close() method, or an I/O error occurs.

Method Syntax

public int read(byte[] b, int off, int len)
throws IOException

Method Argument

Data Type Parameter Description
byte[] b destination buffer.
int off offset at which to start storing bytes.
int len maximum number of bytes to read.

Method Returns

This method returns the number of bytes read, or -1 if the end of the stream has been reached.

Compatibility

Requires Java 1.0 and up

Java BufferedInputStream read(byte[] b, int off, int len) Example

Below is a java code demonstrates the use of read(byte[] b, int off, int len) method of BufferedInputStream class. The example presented might be simple however it shows the behaviour of the read(byte[] b, int off, int len).

package com.javatutorialhq.java.examples;


import java.io.BufferedInputStream;
import java.io.IOException;

/*
 * This example source code demonstrates the use of  
 * read(byte[] b, int off, int len) method 
 * of BufferedInputStream class
 */

public class BufferedInputStreamReadCbufOffsetExample {
	// make sure to mark this as static
	static BufferedInputStream buff=null;

	public static void main(String[] args) {		
		// ask for user first name as console input
		System.out.print("Enter FirstName:");	
		
		// get the console input as String variable
		String firstName=getValue();
		
		// ask for user last name as console input
		System.out.print("Enter LastName:");
		
		// get the console input as String variable
		String lastName=getValue();
		
		// display a welcome message
		System.out.println("Welcome "+firstName+" "+lastName);
		try {
			// closing the Stream
			buff.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	public static String getValue(){
		// initialize a InputStreamReader
		buff = new BufferedInputStream(System.in);
		
		// initialize placeholder variable 
		byte[] buffer=new byte[100];
		
		// initialize return string value
		String value="";
		try {
			/*	read console input
				the reader starts getting character at index 0
				and the length of which is defined by the index size
				of the buffer
			*/
			buff.read(buffer, 0, buffer.length); // be careful for exception
			
			// since the buffer contains blank spaces
			// we have to filter it out
			for(byte b:buffer){				
				char charBuffer = (char)b;
				// removes white spaces
				if((int)charBuffer!=0 && (int)charBuffer!=10 && (int)charBuffer!=13){		
					// accumulate the characters into a string buffer
					value=value + charBuffer;
				}
				
			}
		} catch (IOException e) {

			System.out.println("IOException occured");
		}
		return value;
	}

}

Sample Output

Below is the sample output when you run the above example.

java BufferedInputStream read(byte[] b, int off, int len) example output