В Java, если указать a java.net.URL
или a String
в виде http://www.example.com/some/path/to/a/file.xml
, какой самый простой способ получить имя файла, за исключением расширения? Итак, в этом примере я ищу что-то, что возвращается "file"
.
Я могу придумать несколько способов сделать это, но я ищу что-то, что легко читать и кратко.
Ответы:
Вместо того, чтобы изобретать велосипед, как насчет использования Apache commons-io :
источник
URL#getPath
ИString#substring
илиPath#getFileName
илиFile#getName
).источник
substring()
http://example.org/file#anchor
,http://example.org/file?p=foo&q=bar
ни дляhttp://example.org/file.xml#/p=foo&q=bar
String url = new URL(original_url).getPath()
и добавите специальный регистр для имен файлов, которые не содержат,.
то это работает нормально.Если вам не нужно избавляться от расширения файла, вот способ сделать это, не прибегая к подверженным ошибкам манипуляциям со строками и не используя внешние библиотеки. Работает с Java 1.7+:
источник
URI.getPath()
возвращает aString
, так что я не понимаю, почему это не сработаетgetPath
и используете вместо этого перегрузку URI.Paths.get(new URI(url))
? Это, кажется, не работает для меняЭто должно обрезать это (я оставлю обработку ошибок вам):
источник
http://www.example.com/
илиhttp://www.example.com/folder/
)lastIndexOf
не работает таким образом. Но намерение ясно.источник
Один лайнер:
Полный код (в scala REPL):
Примечание :
URI#gePath
уже достаточно умен, чтобы убрать параметры запроса и схему протокола. Примеры:источник
Получить имя файла с расширением , без расширения , только с расширением всего за 3 строки:
Журнал Результат:
Надеюсь, это поможет вам.
источник
Я придумал это:
источник
Есть несколько способов:
Java 7 File I / O:
Apache Commons:
Используя Джерси:
подстрок:
источник
Paths.get(new URL(strUrl).getFile()).getFileName().toString();
спасибо за идею!Будь проще :
источник
url.getFile()
на,url.toString()
и он работает#
в пути.источник
Вот самый простой способ сделать это в Android. Я знаю, что это не будет работать в Java, но это может помочь разработчику приложений для Android.
источник
Создайте объект URL из строки. Когда у вас есть первый объект URL, есть методы, позволяющие легко извлечь практически любой фрагмент необходимой вам информации.
Я настоятельно рекомендую веб-сайт Javaalmanac, на котором есть множество примеров, но который с тех пор был перенесен. Вы можете найти http://exampledepot.8waytrips.com/egs/java.io/File2Uri.html интересным:
источник
Если вы хотите получить только имя файла из java.net.URL (не включая параметры запроса), вы можете использовать следующую функцию:
Например, этот входной URL:
Будет переведен в эту строку вывода:
источник
Я обнаружил, что некоторые URL-адреса при передаче непосредственно в
FilenameUtils.getName
возвращают нежелательные результаты, и их нужно свернуть, чтобы избежать эксплойтов.Например,
возвращается
Я сомневаюсь, что кто-то хочет разрешить.
Следующая функция работает нормально, показывает некоторые из этих тестов и возвращает,
null
когда имя файла не может быть определено.Это завершено некоторыми простыми тестами в следующем примере:
источник
У URL могут быть параметры в конце, это
источник
/
может появиться во фрагменте. Вы будете извлекать не те вещи.Url
Объект URLLIB позволяет получить доступ неэкранированного имени файла на пути в. Вот некоторые примеры:источник
ответ Энди переделан с использованием split ():
источник
источник
Как насчет этого:
источник
Чтобы вернуть имя файла без расширения и без параметров, используйте следующее:
Чтобы вернуть имя файла с расширением без параметров, используйте это:
источник
Помимо всех продвинутых методов, мой простой трюк
StringTokenizer
:источник
Если вы используете Spring , есть помощник для обработки URI. Вот решение:
источник
вернуть новый файл (Uri.parse (url) .getPath ()). getName ()
источник
источник
У меня такая же проблема, как и у вас. Я решил это следующим образом:
источник
импорт java.io. *;
Я надеюсь, что это поможет вам.
источник