bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Java/Java I/O Streams
Java•Java I/O Streams

Java FileInputStream

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind Java FileInputStream?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

___ java.io.FileInputStream; // Import FileInputStream
3Order

Put the learning moves in the order that makes the concept easiest to apply.

Choosing the Right Class
Copy a Binary File (Real-World Example)
Read a Text File (Basic Example)

FileInputStream

So far, you have used the Scanner class to read text files . Scanner is very convenient for text because it can split input into lines, words, or numbers. However, sometimes you need more control. For example, when reading binary data (like images, audio, or PDFs), or when you need full control of raw bytes. In those cases, you use FileInputStream .

Read a Text File (Basic Example)

This example uses FileInputStream to read a text file, one byte at a time, and print the result as characters:

Example

import java.io.FileInputStream; // Import FileInputStream
import java.io.IOException; // Import IOException
public class Main {
 public static void main(String[] args) {
 // try-with-resources: FileInputStream will be closed automatically try (FileInputStream input = new FileInputStream("filename.txt")) {
 int i; // variable to store each byte that is read
 // Read one byte at a time until end of file (-1 means "no more data")
 while ((i = input.read()) != -1) {
 // Convert the byte to a character and print it to the console System.out.print((char) i);
 }
 } catch (IOException e) {
 // If an error happens (e.g. file not found), print an error message System.out.println("Error reading file.");
}
}
}

The output will be

Explanation: This program opens filename.txt , reads it byte by byte, and prints the result as characters in the console.

Copy a Binary File (Real-World Example)

The real strength of FileInputStream is that it can handle any file type , not just text. Here is an example that copies an image file:

Example

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
 public static void main(String[] args) {
 // Copy image.jpg into copy.jpg try (FileInputStream input = new FileInputStream("image.jpg"); FileOutputStream output = new FileOutputStream("copy.jpg")) {
 int i;
 while ((i = input.read()) != -1) {
 output.write(i); // write the raw byte to the new file
 }
 System.out.println("File copied successfully.");
 } catch (IOException e) {
 System.out.println("Error handling file.");
}
}
}

Explanation: This program reads image.jpg and writes it into copy.jpg . Since it works with raw bytes, it can copy any kind of file - text, images, audio, or PDFs.

Note

The program also uses FileOutputStream . While FileInputStream is used to read bytes from a file, FileOutputStream is used to write bytes to a file. Together, they make it possible to copy any kind of file.

You will learn more about FileOutputStream in the next chapter .

Choosing the Right Class

Java gives you several ways to read files. Here's when to pick each one:

  • Scanner - best for simple text and when you want to parse numbers or words easily.
  • BufferedReader - best for large text files , because it is faster and reads line by line.
  • FileInputStream - best for binary data (images, audio, PDFs) or when you need full control of raw bytes.

Previous

Java I/O Streams

Next

Java FileOutputStream