3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
resource.getFile()期望資源本身在文件系統(tǒng)上可用,即不能嵌套在jar文件中。這就是為什么當(dāng)您在STS中運(yùn)行應(yīng)用程序時(shí)它可以工作,但是一旦您構(gòu)建了應(yīng)用程序并從可執(zhí)行jar中運(yùn)行它后,它就無(wú)法工作。建議不要使用getFile()來(lái)訪問資源的內(nèi)容getInputStream()。這樣一來(lái),無(wú)論資源位于何處,您都可以閱讀其內(nèi)容。

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您使用的是Spring框架,那么使用Spring框架的讀ClassPathResource入String是非常簡(jiǎn)單的FileCopyUtils:
String data = "";
ClassPathResource cpr = new ClassPathResource("static/file.txt");
try {
byte[] bdata = FileCopyUtils.copyToByteArray(cpr.getInputStream());
data = new String(bdata, StandardCharsets.UTF_8);
} catch (IOException e) {
LOG.warn("IOException", e);
}

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果要使用文件:
ClassPathResource classPathResource = new ClassPathResource("static/something.txt");
InputStream inputStream = classPathResource.getInputStream();
File somethingFile = File.createTempFile("test", ".txt");
try {
FileUtils.copyInputStreamToFile(inputStream, somethingFile);
} finally {
IOUtils.closeQuietly(inputStream);
}
添加回答
舉報(bào)