最近做一個項目,直接在Resource目錄下放了一個test.png文件,在讀取時的代碼如下:
1 File testFile = ResourceUtils.getFile("classpath:test.png");
在idea中調試時是沒有問題的,於是提交代碼,發布服務等等操作,於是收到測試同事反饋回來的功能異常,查看日志,發現有大量的異常堆棧,看了下是test.png文件讀取失敗導致的空指針異常的問題。
通過網上搜索才知道問題的根源所在,原來如果是war包時,tomcat是會解壓成文件系統的文件的,這么使用是沒有問題的,但是因為我們這個是使用的SpringBoot,直接打成jar包運行的,test.png文件只是jar包里面的資源文件,是不能去讀取文件路徑來訪問的,網上的解決的方法有多種辦法,基本上是通過classLoader.getResourceAsStream來讀取的,但是Spring框架自己提供了一個ClassPathResource類,這個類是專門用於處理這種路徑問題的,其使用也非常方便,修改后的代碼如下:
1 String fileName = "test.png"; 2 ClassPathResource rs = new ClassPathResource(fileName); 3 InputStream testStream = rs.getInputStream();