
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - FilterInputStream read(byte[] b) method
Description
The Java FilterInputStream read(byte[] b) method reads up to b.length of data from this filter input stream into an array of bytes. This method block until input data is available.
Key Points
Reads up to b.length bytes into the byte array.
Returns the number of bytes actually read.
Returns -1 when EOF (End of File) is reached.
Declaration
Following is the declaration for java.io.FilterInputStream.read(byte[] b) method −
public int read(byte[] b)
Parameters
b − The destination buffer.
Return Value
The method returns the total number of bytes read into the buffer, or -1 if there is no more data to read.
Exception
IOException − If an I/O error occurs
Example - Usage of FilterInputStream read(byte[] b) method
The following example shows the usage of Java FilterInputStream read(byte[] b) method.
FilterInputStreamDemo.java
package com.tutorialspoint; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; public class FilterInputStreamDemo { public static void main(String[] args) throws Exception { InputStream is = null; FilterInputStream fis = null; int i = 0; char c; byte[] buffer = new byte[6]; try { // create input streams is = new FileInputStream("test.txt"); fis = new BufferedInputStream(is); // returns number of bytes read to buffer i = fis.read(buffer); // prints System.out.println("Number of bytes read: "+i); // for each byte in buffer for(byte b:buffer) { // converts byte to character c = (char)b; // prints System.out.println("Character read: "+c); } } catch(IOException e) { // if any I/O error occurs e.printStackTrace(); } finally { // releases any system resources associated with the stream if(is!=null) is.close(); if(fis!=null) fis.close(); } } }
Output(assuming test.txt contains ABCDEF)
Let us compile and run the above program, this will produce the following result−
Number of bytes read: 6 Character read: A Character read: B Character read: C Character read: D Character read: E Character read: F
Example - Reading Multiple Bytes Using BufferedInputStream
The following example shows the usage of Java FilterInputStream read(byte[] b) method.
FilterInputStreamDemo.java
package com.tutorialspoint; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FilterInputStream; import java.io.IOException; public class FilterInputStreamDemo { public static void main(String[] args) { try (FilterInputStream fis = new BufferedInputStream(new FileInputStream("example.txt"))) { byte[] buffer = new byte[10]; // Buffer to hold 10 bytes int bytesRead = fis.read(buffer); // Read into buffer if (bytesRead != -1) { System.out.println("Bytes read: " + bytesRead); System.out.println("Data: " + new String(buffer, 0, bytesRead)); // Convert to string } } catch (IOException e) { e.printStackTrace(); } } }
Output(assuming example.txt contains HelloMicroservices)
Let us compile and run the above program, this will produce the following result−
Bytes read: 10 Data: HelloMicro
Explanation
Uses BufferedInputStream (subclass of FilterInputStream).
Reads up to 10 bytes into a byte array.
Converts the read bytes into a string and prints them.
Example - Reading a File in Chunks Using PushbackInputStream
The following example shows the usage of Java FilterInputStream read(byte[] b) method.
FilterInputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.PushbackInputStream; public class FilterInputStreamDemo { public static void main(String[] args) { try (FilterInputStream fis = new PushbackInputStream(new FileInputStream("example.txt"))) { byte[] buffer = new byte[5]; // Buffer for 5 bytes int bytesRead; while ((bytesRead = fis.read(buffer)) != -1) { // Read in chunks System.out.print(new String(buffer, 0, bytesRead)); // Print read data } } catch (IOException e) { e.printStackTrace(); } } }
Output(assuming example.txt contains Microservices)
Let us compile and run the above program, this will produce the following result−
Microservices
Explanation
Uses PushbackInputStream (a FilterInputStream subclass).
Reads the file in chunks of 5 bytes at a time.
Continues reading until EOF (-1) is reached.