Доступ к ресурсу Java как к файлу

Я пытаюсь получить доступ к ресурсу из пути к классу/файла JAR как объекта File .Я знаю, что вместо этого предпочтительнее использовать объект InputStream, но я использую внешнюю библиотеку (WorldEdit), которой нужен объект File.

Вот мой код:

InputStream templStream = "".getClass().getResourceAsStream("/res/template.prom");
System.out.println("templateStream: " + templStream.toString());
File templFile = new File("".getClass().getResource("/res/template.prom").toURI());
System.out.println("templateFile: " + templFile.canRead());

Теперь, пока я все еще внутри eclipse, оба способа доступа к ресурсу работают безупречно и выдают следующий результат:

templStream: java.io.BufferedInputStream@746d1683
templFile: true

Но после экспорта кода в архив JAR код дает сбой:

templStream: sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@47aa261b
Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical
    at java.io.File.<init>(File.java:392)
    at SMCToPROM.main(SMCToPROM.java:101)

Итак, я безуспешно искал способ либо получить доступ к ресурсу как файлу напрямую, либо пойти по пути использования InputStream и преобразования этого InputStream в файл.

В худшем случае запасным решением будет копирование InputStream в файл в файловой системе, а затем открытие этого файла, но я надеюсь, что это не потребуется.

5
задан mic_e 15 May 2012 в 16:39
поделиться