В первый, я хочу, чтобы убедиться, что вы знаете, что это невозможно, чтобы выяснить, какой тип файла URI, ссылки тоже, так как ссылка заканчивая .jpg
может позволить вам получить доступ к .exe
файл (особенно это true для URL-адресов, из-за символических ссылок и файлов .htaccess), таким образом, это не твердое решение, чтобы получить расширение реального из URI, если вы хотите ограничить допустимые типы файлов, если это то, что вы собираетесь делать конечно. Итак, я предполагаю, что вы просто хотите узнать, какое расширение файла основано на его URI, хотя это не полностью заслуживает доверия;
Вы можете получить расширение из любого URL-адреса URI, URL-адреса или файла, используя приведенный ниже метод. Вам не нужно использовать какие-либо библиотеки или расширения, поскольку это базовая функциональность Java. Это решение get является позицией последнего знака .
(период) в строке URI и создает подстроку, начиная с позиции знака периода, заканчивающегося в конце строки URI.
String uri = "http://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/integrating_apps/images/google_logo.png";
String extension = uri.substring(uri.lastIndexOf("."));
Этот пример кода будет выше вывод будет .png
расширение из URI в переменной extension
, обратите внимание, что .
(период) входит в расширение, если вы хотите собрать расширение файла без предварительно установленного периода , увеличение индекса подстроки по одному, как это:
String extension = uri.substring(url.lastIndexOf(".") + 1);
One Pro для использования этого метода над регулярными выражениями (метод других люди используют много) является то, что это намного меньше ресурсов дорогое и намного менее тяжелым для выполнения, давая тот же результат.
Кроме того, вы можете убедиться, что URL содержит период символа, используйте следующий код для достижения этой цели:
String uri = "http://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/integrating_apps/images/google_logo.png";
if(uri.contains(".")) {
String extension = uri.substring(url.lastIndexOf("."));
}
Вы можете улучшить функционально еще больше, чтобы создать более надежную систему. В качестве примера можно привести два примера:
- Проверьте URI, проверив его, или убедившись, что синтаксис URI действителен, возможно, используя регулярное выражение.
- Обрезать расширение, чтобы удалить нежелательные пробелы.
Я не буду рассматривать решения для этих двух функций здесь, потому что это не то, о чем спрашивали в первую очередь.
Надеюсь, это поможет!
Это не сработает, если URL-адрес имеет знак вопроса после имени файла или хэша. –
Этот символ периода, который вы добавили, не делает ничего очень полезного, так как в любом случае до домена верхнего уровня существует период. –