背景:
項目的resources
目錄下放置了一份txt文件,需求是想獲取到這份文件轉成File對象,調用文件上傳的接口進行文件上傳操作。
實現:
1、使用 ResourceUtils:本地ok,測試環境無效
File file = ResourceUtils.getFile("classpath:whitelist/微樂分新白名單2月推薦-前100.txt");
注意:ResourceUtils.getFile()
方法可以獲取到resources
下的文件,本地沒問題 但是發布到 測試環境(linux
系統下)沒用。
2、ClassPathResource,用於打成jar包后獲取文件的方法:本地&測試環境都ok
ClassPathResource classPathResource = new ClassPathResource("whitelist/微樂分新白名單2月推薦-前100.txt"); InputStream inputStream = classPathResource.getInputStream();
File file = asFile(inputStream);//手動轉換:InputStream To File
備注:不可以直接通過classPathResource.getFile()得到File,會失敗,暫時不清楚為什么,先解決問題,方式為由classPathResource獲取到InputStream,然后再將InputStream轉成File,轉換的方式如下:
/** * InputStream To File * * @param in InputStream * * @return File * * */ public static File asFile(InputStream in) throws IOException { File tempFile = File.createTempFile("whitelist", ".tmp"); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); IOUtils.copy(in, out); return tempFile; }
參考文章:
springboot-項目獲取resources下文件的方法