Извлечение имени файла из абсолютного пути в Java

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Используйте объект Path, чтобы извлечь имя файла из абсолютного пути. Преобразуйте строку в объект Path с использованием метода Paths.get(), а затем вызовите getFileName().toString():

Java
Скопировать код
String filePath = "C:/example/folder/file.txt";
String fileName = Paths.get(filePath).getFileName().toString();
Кинга Идем в IT: пошаговый план для смены профессии

Основные подходы к извлечению имени файла

Мы разобрали быстрый и эффективный способ получения имени файла. Впрочем, в соответствии с особенностями задачи могут потребоваться иные подходы. Вот некоторые из них:

Использование класса File

Используйте класс java.io.File для извлечения имени файла:

Java
Скопировать код
File file = new File(filePath);
String fileName = file.getName();
// Получение имени файла завершено, можете использовать его!

Использование методов класса String

Можно обратиться к стандартным операциям работы со строками в Java:

Java
Скопировать код
int lastSeparatorIndex = filePath.lastIndexOf(File.separator);
String fileName = lastSeparatorIndex == -1 ? filePath : filePath.substring(lastSeparatorIndex + 1);
// Избегаем возможного StringIndexOutOfBoundsException при помощи lastSeparatorIndex

Проверьте, равен ли lastSeparatorIndex значению -1. В противном случае может возникнуть ошибка StringIndexOutOfBoundsException.

Визуализация

Вспомните, как вы представляете себе путь к файлу — как маршрут поезда /User/john/Documents/report.pdf. Имя файла, которое мы ищем, — это его последняя остановка на маршруте.

Markdown
Скопировать код
Последняя станция 🚉: [report.pdf] // Всем пассажирам — приготовиться к выходу!

Работа с разделителями разных типов

Не забывайте, что разделители в путях к файлам могут отличаться в разных операционных системах. В таких случаях используйте Paths:

Java
Скопировать код
Path path = Paths.get(filePath);
String fileName = path.getFileName().toString();

Такой подход позволяет не задумываться о типе системы, будь то Windows (\) или Unix (/).

Использование Apache Commons IO

Если вы хотите более простого решения, попробуйте Apache Commons IO:

Java
Скопировать код
String fileName = FilenameUtils.getName(filePath);

Этот инструмент способствует корректной обработке путей на любых платформах, что позволяет сэкономить время и нервы.

Гибкое использование Path API

Возможно, вам потребуется работать не только с именем файла, но и с другими частями пути. В таких ситуациях пригодится Path API:

Java
Скопировать код
Path parentDir = path.getParent();                      // Где находится находится наш файл?
Path root = path.getRoot();                            // Какой у нас корневой каталог?
Path withoutFileName = path.subpath(0, path.getNameCount() – 1); // Как выглядит путь без имени файла?

Такой подход помогает эффективно манипулировать путями, исключает необходимость работы со строками и приводит к созданию стабильного и поддерживаемого кода.