Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

File Handling in Java

1. Introduction

File handling in Java refers to the process of reading from and writing to files. It is an essential part of programming that allows applications to store data persistently.

2. File Handling Concepts

Before diving into file handling, it’s crucial to understand some key concepts:

  • File: A collection of data stored in a particular format.
  • Stream: A sequence of data elements made available over time.
  • Byte Stream: Used for input and output of bytes (binary files).
  • Character Stream: Used for input and output of characters (text files).

3. File Handling using I/O

Java provides the java.io package for file handling, which includes classes like FileReader, FileWriter, BufferedReader, and BufferedWriter.

3.1 Reading from a File

import java.io.*;

public class FileReadExample {
    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();
        }
    }
}

3.2 Writing to a File

import java.io.*;

public class FileWriteExample {
    public static void main(String[] args) {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
            bw.write("Hello, World!");
            bw.newLine();
            bw.write("This is a file write example.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. File Handling using NIO

The New Input/Output (NIO) package, introduced in Java 7, provides improved file handling capabilities. It includes features like non-blocking I/O operations and a more flexible file system interface.

4.1 Reading from a File using NIO

import java.nio.file.*;

public class NioFileReadExample {
    public static void main(String[] args) {
        Path path = Paths.get("example.txt");
        try {
            Files.lines(path).forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4.2 Writing to a File using NIO

import java.nio.file.*;

public class NioFileWriteExample {
    public static void main(String[] args) {
        Path path = Paths.get("output.txt");
        String content = "Hello, NIO World!";
        try {
            Files.write(path, content.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. Best Practices

  • Always close file streams to prevent resource leaks.
  • Use try-with-resources for automatic resource management.
  • Handle exceptions properly to avoid application crashes.
  • Prefer NIO for modern applications due to its flexibility and performance.

6. FAQ

What is the difference between I/O and NIO in Java?

I/O (Input/Output) is the traditional way of handling file operations in Java, while NIO (New Input/Output) provides a more modern approach with non-blocking I/O capabilities and improved performance.

How do I read a binary file in Java?

To read a binary file, you can use FileInputStream or DataInputStream classes to read the raw bytes.

Can I read and write files in different character encodings?

Yes, you can read and write files in different character encodings by using InputStreamReader and OutputStreamWriter, specifying the desired encoding.