Path.of joins path segments without hard-coding the platform separator.

path segment A path segment is one named part of a path, such as a directory name or file name.
joined path Joining segments lets Java choose the correct separator for the current system.

Path Join

lesson
PathJoin.java
Replay: real traced execution (multi-file project)
import java.nio.file.Path;

public class PathJoin {
    public static void main(String[] args) {
        int lesson = 1;
        String fileName = "lesson" + lesson + ".txt";
        Path path = Path.of("java", "files", fileName);

        System.out.println("parent=" + path.getParent());
        System.out.println("file=" + path.getFileName());
    }
}
import java.nio.file.Path;

public class PathJoin {
    public static void main(String[] args) {
        int lesson = 2;
        String fileName = "lesson" + lesson + ".txt";
        Path path = Path.of("java", "files", fileName);

        System.out.println("parent=" + path.getParent());
        System.out.println("file=" + path.getFileName());
    }
}
import java.nio.file.Path;

public class PathJoin {
    public static void main(String[] args) {
        int lesson = 3;
        String fileName = "lesson" + lesson + ".txt";
        Path path = Path.of("java", "files", fileName);

        System.out.println("parent=" + path.getParent());
        System.out.println("file=" + path.getFileName());
    }
}
  1. lesson ← 1, fileName ← lesson1.txt, path ← java/files/lesson1.txt

    3public class PathJoin {4    public static void main(String[] args) {5        int lesson→ 1 = 1;  //@lesson=2, 36        String fileName→ lesson1.txt = "lesson" + lesson1 + ".txt";7        Path path→ java/files/lesson1.txt = Path.of("java", "files", fileNamelesson1.txt);89        System.out.println("parent=" + path.getParent());10        System.out.println("file=" + path.getFileName());11    }
    outputparent=java/files
    file=lesson1.txt
  1. lesson ← 2, fileName ← lesson2.txt, path ← java/files/lesson2.txt

    3public class PathJoin {4    public static void main(String[] args) {5        int lesson→ 2 = 2;6        String fileName→ lesson2.txt = "lesson" + lesson2 + ".txt";7        Path path→ java/files/lesson2.txt = Path.of("java", "files", fileNamelesson2.txt);89        System.out.println("parent=" + path.getParent());10        System.out.println("file=" + path.getFileName());11    }
    outputparent=java/files
    file=lesson2.txt
  1. lesson ← 3, fileName ← lesson3.txt, path ← java/files/lesson3.txt

    3public class PathJoin {4    public static void main(String[] args) {5        int lesson→ 3 = 3;6        String fileName→ lesson3.txt = "lesson" + lesson3 + ".txt";7        Path path→ java/files/lesson3.txt = Path.of("java", "files", fileNamelesson3.txt);89        System.out.println("parent=" + path.getParent());10        System.out.println("file=" + path.getFileName());11    }
    outputparent=java/files
    file=lesson3.txt