
- 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 - FileInputStream read(byte[] b, int off, int len) method
Description
The Java FileInputStream read(byte[] b, int off, int len) method reads upto len bytes of data from this input stream into an array of bytes, starting at offset off in the destination array b.
Declaration
Following is the declaration for java.io.FileInputStream.read(byte[] b, int off, int len) method −
public int read(byte[] b, int off, int len)
Parameters
b − The byte array into which data is read.
off − The start offset in the destination array b.
len − The maximum number of bytes to be read.
Return Value
The method returns the total number of bytes read into the buffer.
Exception
IOException − If an I/O error occurs.
NullPointerException − If b is null.
IndexOutOfBoundsException − If len or off is negative, or b.length-off is greater than b.length.
Example - Usage of FileInputStream read(byte[] b, int off, int len) method
The following example shows the usage of Java FileInputStream read(byte[] b, int off, int len) method.
FileInputStreamDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.FileInputStream; public class FileInputStreamDemo { public static void main(String[] args) throws IOException { FileInputStream fis = null; int i = 0; char c; byte[] bs = new byte[4]; try { // create new file input stream fis = new FileInputStream("test.txt"); // read bytes to the buffer i = fis.read(bs, 2, 1); // prints System.out.println("Number of bytes read: "+i); System.out.print("Bytes read: "); // for each byte in buffer for(byte b:bs) { // converts byte to character c = (char)b; if(b == 0) c = '-'; // print System.out.print(c); } } catch(Exception ex) { // if any error occurs ex.printStackTrace(); } finally { // releases all system resources from the streams if(fis!=null) fis.close(); } } }
Output
Assumption
Assuming we have a text file test.txt in current directory, which has the following content. This file will be used as an input for our example program.
ABCDEF
Let us compile and run the above program, this will produce the following result−
Number of bytes read: 1 Bytes read: --A-
Example - Reading a File in Chunks
The following example shows the usage of Java FileInputStream read(byte[] b, int off, int len) method. This example reads data from a file using read(byte[] buf, int off, int len) method in chunks and prints it as text.
FileInputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.IOException; public class FileInputStreamDemo { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.txt")) { byte[] buffer = new byte[10]; // Buffer of 10 bytes int bytesRead; while ((bytesRead = fis.read(buffer, 0, buffer.length)) != -1) { System.out.print(new String(buffer, 0, bytesRead)); // Convert bytes to String } } catch (IOException e) { e.printStackTrace(); } } }
Output(contents of example.txt)
Let us compile and run the above program, this will produce the following result−
Hello, World!
Explanation
Opens example.txt using FileInputStream.
Reads up to 10 bytes into buffer per iteration.
Converts read bytes into a String and prints them.
The loop continues until read() returns -1, indicating EOF.
Uses try-with-resources to automatically close the stream.
Example - Reading a Specific Portion of Data
The following example shows the usage of Java FileInputStream read(byte[] b, int off, int len) method. This example reads part of the file into a specific portion of an array.
FileInputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; public class FileInputStreamDemo { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("example.txt")) { byte[] buffer = new byte[15]; // Larger buffer Arrays.fill(buffer, (byte) '-'); // Fill with '-' int bytesRead = fis.read(buffer, 5, 5); // Read 5 bytes, store at index 5 System.out.println(new String(buffer)); // Print buffer contents System.out.println("Bytes read: " + bytesRead); } catch (IOException e) { e.printStackTrace(); } } }
Output(contents of example.txt)
Let us compile and run the above program, this will produce the following result−
-----Hello----- Bytes read: 5
Explanation
Initializes a 15-byte buffer filled with '-'.
Reads 5 bytes from the file into buffer starting at index 5.
Prints the entire buffer, showing where the data was stored.
Also prints the number of bytes read.