Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
Java keywordsIntroduction To JavaJava File HandlingJava Language BasicsJava ArraysJava Object-Oriented Programming

Java Read Files

Reading files is a common task in Java programming, often necessary for data processing and manipulation. Java provides several classes and methods to read files efficiently, with options to handle text and binary data.

Key Classes for File Reading

  • FileReader: Used for reading text files in a simple and efficient manner.
  • BufferedReader: Wraps around FileReader to read text from a character-input stream, buffering characters for efficient reading of characters, arrays, and lines.
  • Files: Part of the java.nio.file package, it provides static methods to read files and directories.
  • Scanner: A versatile class used for parsing primitive types and strings using regular expressions.

Examples

Example 1: Using FileReader and BufferedReader


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderExample {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

In this example, FileReader and BufferedReader are used to read a text file line by line. The try-with-resources statement ensures that the file is closed after reading.

Example 2: Using Files Class


import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class FilesExample {
    public static void main(String[] args) {
        try {
            List<String> lines = Files.readAllLines(Paths.get("example.txt"));
            for (String line : lines) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

The Files class provides a straightforward way to read all lines of a file into a List<String>. This method is efficient for smaller files.

Example 3: Using Scanner


import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(new File("example.txt"))) {
            while (scanner.hasNextLine()) {
                System.out.println(scanner.nextLine());
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
    

The Scanner class is used here to read a file line by line. It is useful for parsing data with specific delimiters.

Tips and Best Practices

  • Resource Management: Use try-with-resources to ensure that file streams are closed automatically, preventing resource leaks.
  • Exception Handling: Always handle IOException and FileNotFoundException when working with file I/O operations.
  • Character Encoding: Be mindful of character encoding when reading files. Use InputStreamReader with a specified charset if necessary.
    
    new BufferedReader(new InputStreamReader(new FileInputStream("example.txt"), "UTF-8"));
                
  • File Size: For large files, consider reading in chunks or using memory-mapped files to avoid memory issues.
  • Concurrency: If multiple threads need to read the same file, consider using synchronized blocks or thread-safe classes to manage access.