Как определить расширение файла файла от uri

Принятие мне дают 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 как я получаю расширение файла также''.

18
задан Ankur 13 July 2010 в 03:57
поделиться

1 ответ

На это есть два ответа.

Если URI не имеет "расширения файла", то вы никак не сможете определить его, посмотрев на него текстуально или преобразовав его в файл. Вообще говоря, ни URI, ни файл не должны иметь расширения. Расширения - это просто соглашение об именовании файлов.

Что вам действительно нужно, так это тип носителя / MIMEтип / тип содержимого файла. Возможно, вы сможете определить тип медиафайла, сделав что-то вроде этого:

URLConnection conn = url.connect();
String type = conn.getContentType();

Однако метод getContentType() вернет null, если сервер не установил тип содержимого в ответе. (Или он может выдать вам неправильный тип содержимого или неспецифический тип содержимого). В этом случае вам придется прибегнуть к "угадыванию" типа содержимого, и я не знаю, даст ли это достаточно конкретный тип в данном случае.

Но если вы "знаете", что файл должен быть OWL, почему бы вам просто не дать ему расширение ".owl" в любом случае?

14
ответ дан 30 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: