Mediumnio

Что такое NIO.2 (Path, Files)?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

NIO.2 (Java 7) — современный API для файловых операций, заменяет java.io.File. Классы: Path (замена File), Files (статические методы).

Path p = Path.of("/tmp/file.txt");
Files.exists(p);
Files.createFile(p);

String content = Files.readString(p);          // Java 11
Files.writeString(p, "text");

// Stream<String> строк файла (try-with-resources обязательно!)
try (Stream<String> lines = Files.lines(p)) {
    lines.filter(s -> s.startsWith("#")).forEach(System.out::println);
}

// Обход директорий
try (Stream<Path> s = Files.walk(Path.of("/dir"))) {
    s.filter(Files::isRegularFile).forEach(System.out::println);
}
  • Path: resolve, relativize, normalize, toAbsolutePath;
  • Поддержка symbolic links, file attributes (Posix/Dos), custom file systems (zip);
  • WatchService — мониторинг изменений;
  • NIO (Java 1.4) — channels, buffers, selectors для non-blocking I/O.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.