FileInputStream vs ClassPathResource vs getResourceAsStream и целостность файлов

У меня странная проблема:

в src/main/resources у меня есть файл "template.xlsx".

Если я сделаю это:

InputStream is = new ClassPathResource("template.xlsx").getInputStream();

Или это:

InputStream is = ClassLoader.getSystemResourceAsStream("template.xlsx");

Или это:

InputStream is = getClass().getResourceAsStream("/template.xlsx");

Когда я попытаюсь создать книгу:

Workbook wb = new XSSFWorkbook(is);

Я получаю эту ошибку:

java.util.zip.ZipException: invalid block type

НО, когда я получаю свой файл как это:

InputStream is = new FileInputStream("C:/.../src/main/resources/template.xlsx");

Это работает!

Что не так? Я не могу жестко указать полный путь к файлу.

Может ли кто-нибудь помочь мне с этим?

Спасибо

11
задан Maxime ARNSTAMM 23 March 2012 в 14:09
поделиться