Принятие мне дают URI, и я хочу найти расширение файла файла, который возвращается, что я должен сделать в Java.
Например, файлом по http://www.daml.org/2001/08/baseball/baseball-ont является http://www.daml.org/2001/08/baseball/baseball-ont.owl
Когда я делаю
URI uri = new URI(address);
URL url = uri.toURL();
String file = url.getFile();
System.out.println(file);
Я не могу видеть полное имя файла с .owl
расширение, просто /2001/08/baseball/baseball-ont
как я получаю расширение файла также''.
На это есть два ответа.
Если URI не имеет "расширения файла", то вы никак не сможете определить его, посмотрев на него текстуально или преобразовав его в файл
. Вообще говоря, ни URI, ни файл не должны иметь расширения. Расширения - это просто соглашение об именовании файлов.
Что вам действительно нужно, так это тип носителя / MIMEтип / тип содержимого файла. Возможно, вы сможете определить тип медиафайла, сделав что-то вроде этого:
URLConnection conn = url.connect();
String type = conn.getContentType();
Однако метод getContentType()
вернет null
, если сервер не установил тип содержимого в ответе. (Или он может выдать вам неправильный тип содержимого или неспецифический тип содержимого). В этом случае вам придется прибегнуть к "угадыванию" типа содержимого, и я не знаю, даст ли это достаточно конкретный тип в данном случае.
Но если вы "знаете", что файл должен быть OWL, почему бы вам просто не дать ему расширение ".owl" в любом случае?