Получение расширения файла из http URL с использованием Java - PullRequest
0 голосов
/ 01 марта 2019

Теперь я знаю о FilenameUtils.getExtension() от apache.

Но в моем случае я обрабатываю расширения из URL-адресов http (s), поэтому в случае, если у меня есть что-то вроде

https://your_url/logo.svg?position=5

этот метод вернет svg?position=5

Есть ли лучший способ справиться с этой ситуацией?Я имею в виду, не написав эту логику самостоятельно.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы можете использовать библиотеку URL-адресов из JAVA.Это имеет много полезности в этом случае.Вы должны сделать что-то вроде этого:

String url = "https://your_url/logo.svg?position=5";
URL fileIneed = new URL(url);

Затем у вас есть много методов получения для переменной fileIneed.В вашем случае getPath () получит это:

fileIneed.getPath() ---> "/logo.svg"

И затем используйте библиотеку Apache, которую вы используете, и у вас будет строка svg.

FilenameUtils.getExtension(fileIneed.getPath()) ---> "svg"

Документы библиотеки JAVA по URL >>> https://docs.oracle.com/javase/7/docs/api/java/net/URL.html

0 голосов
/ 01 марта 2019

Если вам нужно решение brandname®, рассмотрите возможность использования метода Apache после удаления строки запроса, если она существует:

String url = "https://your_url/logo.svg?position=5";
url = url.replaceAll("\\?.*$", "");
String ext = FilenameUtils.getExtension(url);
System.out.println(ext);

Если вы хотите использовать однострочник, который даже не требуетвнешней библиотеки, затем рассмотрите эту опцию, используя String#replaceAll:

String url = "https://your_url/logo.svg?position=5";
String ext = url.replaceAll(".*/[^.]+\\.([^?]+)\\??.*", "$1");
System.out.println(ext);

svg

Вот объяснение шаблона регулярного выражения, использованного выше:

.*/     match everything up to, and including, the LAST path separator
[^.]+   then match any number of non dots, i.e. match the filename
\.      match a dot
([^?]+) match AND capture any non ? character, which is the extension
\??.*    match an optional ? followed by the rest of the query string, if present
...