Получить имя файла из местоположения файла в Java
У меня есть String
, который предоставляет абсолютный путь к файлу (включая имя файла). Я хочу получить только имя файла. Каков самый простой способ сделать это?
Он должен быть как можно более общим, поскольку я не могу заранее знать, каким будет URL. Я не могу просто создать объект URL и использовать getFile()
- все, хотя это было бы идеально, если бы это было возможно - поскольку это не обязательно префикс http://
, он мог бы быть c:/или что-то подобное.
Ответы
Ответ 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 предоставляет основы.
Ответ 4
Из Apache Commons IO FileNameUtils
String fileName = FilenameUtils.getName(stringNameWithPath);
Ответ 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");