2012-03-23 17 views
8

getResourceAsStream vs ve dosya Garip bir sorun var.FileInputStream ClassPathResource vs bütünlüğü

i yaparsanız bu:

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

Ya da bu:

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

Ya da bu:

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

i çalışma kitabı oluşturmayı deneyin:

Workbook wb = new XSSFWorkbook(is); 
ben böyle dosyamı aldığımda,

java.util.zip.ZipException: invalid block type 

ANCAK:

bu hatayı alıyorum

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

Çalışıyor!

Sorun nedir? Dosyanın tam yolunu kodlayamıyorum.

Birisi bana yardım edebilir mi?

Teşekkür

+1

Sınıf yolundan yüklediğinizde, * tamamen * hangi template.xlsx' sürümünün yüklenmekte olduğundan emin misiniz? Bir 'getResourceAsStream()' (ve benzeri) birçok yerden bir kaynak yükleyebilir. Dosya adı ile ne yüklendiğinden kesinlikle eminsiniz. –

cevap

18

Aynı sorunu yaşadım, muhtemelen maven filtrelemede sorun var.

Bu kod yük kaynağından dosya, hedef dizinden filtresiz

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

Bu kod yük dosyası, maven içeriği

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

süzülmüş sonra size filtre olmamalıdır ikili dosyalar gibi Bu sayfanın en altında açıklanan iki bağımsız özel kaynak kümesini excel kullanın ve kullanın. maven resources plugin

+0

Bu, maven filtrelemesinden kaynaklanıyor ve akışı yüklemek için kullanılan yöntem değil! Teşekkürler :) –

+0

Cevabınız için çok teşekkür ederim, bu soruna çok fazla zaman harcadım (( –

+0

Bana zaman kazandırdı, teşekkürler. –

0

Eğer

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

gibi erişmeyi deneyin değil mi?

İlgili konular