FileInputStream is a byte stream class used to read raw bytes from a file. It is useful for reading binary files, such as images, audio files, PDFs, etc.It is part of the java.io package and a subclass of InputStream.
Commonly Used Constructors and Methods

Simple Program
Mahesh wants to read the content of a file named "demo.txt" and display it on the console using FileInputStream.
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("demo.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
System.out.println("File error: " + e.getMessage());
}
}
}Output: If demo.txt contains:
Hello LotusJavaPrince!
Then the output will be:
Hello LotusJavaPrince!
FileInputStream is ideal when you need to read binary data or work at the byte level.
- It’s not recommended for reading text files where encoding matters — use
FileReaderorBufferedReaderfor that. - It’s best paired with
BufferedInputStreamfor performance in real-world applications. - Always close the stream after use or use try-with-resources for automatic closure.
