我有一個奇怪的問題:在SRC /主/資源的FileInputStream VS使用ClassPathResource VS的getResourceAsStream和文件完整性
我有一個 「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");
它的工作原理!
出了什麼問題?我無法將完整路徑硬編碼到文件。
有人可以幫助我嗎?
感謝
您可以確保在從類路徑加載時*完全*確定正在加載哪個版本的'template.xlsx'? 'getResourceAsStream()'(等等)可以從很多地方加載資源。通過文件名,您可以絕對確定正在加載的內容。 – 2012-03-23 14:18:54