Lesson 14: New File Methods in Java 11 (readString(), writeString())

Java 11 introduced simpler ways to read and write files using the Files class. These new methods improve file handling by reducing boilerplate code.


1. What Are the New File Methods?

MethodPurposeExample
Files.readString(Path)Reads an entire file into a StringFiles.readString(path)
Files.writeString(Path, String)Writes a String to a fileFiles.writeString(path, "Hello, Java 11!")

βœ… Why use these methods?

  • Before Java 11, reading/writing files required BufferedReader or BufferedWriter.
  • Now, readString() and writeString() make it simpler and more readable.

2. Reading a File Using readString()

πŸ“Œ Example: Reading a File in Java 11+

import java.nio.file.Files;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws Exception {
        Path filePath = Path.of("example.txt");

        String content = Files.readString(filePath);
        System.out.println("File Content:\n" + content);
    }
}

βœ… Output (If example.txt contains “Hello, World!”)

File Content:
Hello, World!

βœ” Much cleaner than Java 8’s BufferedReader!


3. Writing to a File Using writeString()

πŸ“Œ Example: Writing Text to a File

import java.nio.file.Files;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws Exception {
        Path filePath = Path.of("example.txt");

        Files.writeString(filePath, "Hello, Java 11!");
        System.out.println("File written successfully.");
    }
}

βœ… Output:

File written successfully.

βœ” No need for FileWriter or BufferedWriter!


4. Appending to a File

πŸ“Œ Example: Appending Text Using StandardOpenOption.APPEND

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;

public class Main {
    public static void main(String[] args) throws Exception {
        Path filePath = Path.of("example.txt");

        Files.writeString(filePath, "\nAppending new text!", StandardOpenOption.APPEND);
        System.out.println("Text appended successfully.");
    }
}

βœ… Output (example.txt after running the program):

Hello, Java 11!
Appending new text!

βœ” Allows adding new content without overwriting the existing file.


5. Comparison: Java 8 vs. Java 11 File Handling

FeatureJava 8 (Verbose)Java 11+ (Simplified)
Read FileFiles.readAllBytes(path) β†’ new String(byte[])Files.readString(path)
Write FileFiles.write(path, text.getBytes())Files.writeString(path, text)
Append to FileFiles.write(path, text.getBytes(), StandardOpenOption.APPEND)Files.writeString(path, text, StandardOpenOption.APPEND)

6. Handling Exceptions with Files.readString() and Files.writeString()

🚨 What if the file doesn’t exist?

  • readString() will throw a NoSuchFileException.
  • writeString() will create the file automatically if it doesn’t exist.

πŸ“Œ Example: Handling Missing File

import java.nio.file.Files;
import java.nio.file.Path;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        Path filePath = Path.of("missing.txt");

        try {
            String content = Files.readString(filePath); // ❌ FileNotFound if missing
            System.out.println(content);
        } catch (IOException e) {
            System.out.println("File not found: " + e.getMessage());
        }
    }
}

βœ… Output (if missing.txt does not exist):

File not found: missing.txt

βœ” Use try-catch to handle missing files safely.


Lesson Reflection

  1. Why are readString() and writeString() better than older file handling methods?
  2. What happens if you try to read a file that doesn’t exist using readString()?
  3. How can you append data to an existing file instead of overwriting it?

The next Java 12+ feature: New Collectors Methods (teeing()) πŸ˜ŠπŸš€

Tags:

Java Sleep