2013-08-28 5 views
1

В настоящее время я загружал файл свойств из пути к классам, используя следующий код с помощью Гуавы API:Избавьтесь от проверяемого исключения при использовании NiO2 API

final URL fileURL = Resources.getResource("res.properties"); 
final File file = new File(fileURL.getFile()); 

я решил дать попробовать новый NiO2 API введен в Java7SE и удалять любые гуавы API вызовы, так что я преобразовал код на следующее:

final URL fileURL = getClass().getResource("/res.properties"); 
final Path path = Paths.get(fileURL.toURI()); 

Но модифицированный код генерирует проверяемое исключение в строке, где происходит преобразование между URL и URI. Есть ли способ избавиться от него. Могу ли я получить экземпляр Path с данными URL, например?

P.S. Я знаю, что модифицированный код не является семантически таким же, как и оригинальным. getResource Guava выбрасывает IllegalArgumentException, если ресурсы не найдены, в этом случае getResource Java возвращает null.

ответ

1

Вы могли бы использовать:

final File file = new File(fileURL.getFile()); 
final Path path = file.toPath(); //can throw an unchecked exception 
+0

это вариант, но код становится немного нечитаемым (или скажем в заблуждение). Я бы хотел использовать только новый API (без прохождения старого). – jilt3d

+0

Кстати, это вызывает несколько вопросов: почему большинство методов getResource() возвращают URL-адреса, а с другой стороны, фабричные методы для создания Path требуют URI, поскольку конструктор File делает то же самое? – jilt3d

+0

'Paths.get (fileUrl.toString())' должен работать. – assylias

0

Вот что я нашел:

final URL fileURL = getClass().getResource("/res.properties"); 
final URI fileURI = URI.create(fileURL.toString()); 
final Path path = Paths.get(fileURI);