Ho un problema strano:FileInputStream vs ClassPathResource vs getResourceAsStream e file integrità
in src/main/risorse ho un file "template.xlsx".
se faccio questo:
InputStream is = new ClassPathResource("template.xlsx").getInputStream();
O questo:
InputStream is = ClassLoader.getSystemResourceAsStream("template.xlsx");
O questo:
InputStream is = getClass().getResourceAsStream("/template.xlsx");
Quando provo a creare una cartella di lavoro:
Workbook wb = new XSSFWorkbook(is);
ottengo questo errore:
java.util.zip.ZipException: invalid block type
MA, quando ottengo il mio file in questo modo:
InputStream is = new FileInputStream("C:/.../src/main/resources/template.xlsx");
Funziona!
Cosa c'è che non va? Non riesco a hardcode il fullpath del file.
Qualcuno può aiutarmi con questo?
Grazie
Puoi assicurarti che quando carichi dal classpath tu sono * completamente * sicuro di quale versione di 'template.xlsx' viene caricata? Un 'getResourceAsStream()' (e simili) può caricare una risorsa da molte posizioni. Con il nome del file sei assolutamente sicuro di cosa viene caricato. –