Как загрузить ресурс, используя Class Loader в качестве файла? - PullRequest
4 голосов
/ 27 апреля 2010

Я хочу открыть файлы с помощью загрузчика классов. Однако я всегда получаю FileNotFoundException. Как мне создать новый файл, используя URL? Я не хочу открывать его как поток, просто как файл.

URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...

Ответы [ 2 ]

3 голосов
/ 27 апреля 2010

Чтобы преобразовать URL-адрес file://... в java.io.File, вам придется объединить url.getPath() и url.toURI() для безопасного решения:

File f;
try {
    f = new File(url.toURI());
} catch(URISyntaxException e) {
    f = new File(url.getPath());
}

Полные объяснения в этом блоге .

0 голосов
/ 27 апреля 2010

Я просто думаю: а что если Фу в банке? Тогда вы не можете создать файл.

Должна быть возможность заставить его работать, если foo действительно находится в (локальном) каталоге classpath - но вы знаете, он потерпит неудачу, если кто-то упакует его в jar или загрузит через сеть ...

...