Подтвердить что ты не робот

Получить имя файла из местоположения файла в Java

У меня есть String, который предоставляет абсолютный путь к файлу (включая имя файла). Я хочу получить только имя файла. Каков самый простой способ сделать это?

Он должен быть как можно более общим, поскольку я не могу заранее знать, каким будет URL. Я не могу просто создать объект URL и использовать getFile() - все, хотя это было бы идеально, если бы это было возможно - поскольку это не обязательно префикс http://, он мог бы быть c:/или что-то подобное.

4b9b3361

Ответ 1

new File(fileName).getName();

или

int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;

Обратите внимание, что первое решение зависит от системы. Он учитывает только разделитель системы. Поэтому, если ваш код работает в системе Unix и получает путь к Windows, он не будет работать. Это происходит при обработке отправки файлов в Internet Explorer.

Ответ 2

new File(absolutePath).getName();

Ответ 3

Apache Commons IO предоставляет класс FilenameUtils, который дает вам довольно богатый набор функций утилиты для легкого получения различных компонентов имен файлов, хотя The Класс java.io.File предоставляет основы.

Ответ 5

Вот два способа (оба независимы от ОС.)

Используя Paths: Поскольку 1.7

Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();

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

String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");