Tôi gặp sự cố lạ:FileInputStream vs ClassPathResource vs getResourceAsStream và toàn vẹn tệp
trong src/main/resources tôi có tệp "template.xlsx".
Nếu tôi làm điều này:
InputStream is = new ClassPathResource("template.xlsx").getInputStream();
Hoặc này:
InputStream is = ClassLoader.getSystemResourceAsStream("template.xlsx");
Hoặc này:
InputStream is = getClass().getResourceAsStream("/template.xlsx");
Khi tôi cố gắng để tạo ra một bảng tính:
Workbook wb = new XSSFWorkbook(is);
tôi nhận được lỗi này:
java.util.zip.ZipException: invalid block type
NHƯNG, khi tôi nhận được tập tin của tôi như thế này:
InputStream is = new FileInputStream("C:/.../src/main/resources/template.xlsx");
Nó hoạt động!
Điều gì là sai? Tôi không thể mã hóa đường dẫn đầy đủ vào tệp.
Ai đó có thể giúp tôi với điều này không?
Cảm ơn
Bạn có thể đảm bảo rằng khi bạn tải từ đường dẫn lớp bạn * hoàn toàn * chắc chắn phiên bản 'template.xlsx' nào đang được tải? Một 'getResourceAsStream()' (và tương tự) có thể tải một tài nguyên từ nhiều nơi. Với tên tập tin bạn hoàn toàn chắc chắn những gì đang được nạp. –