war项目使用getClass().getClassLoader().getResource()读取path字符串地址。
jar项目使用getClass().getResourceAsStream()读取到InputStream中。
注意:jar读取的文件地址前必须加上 / ,否则依旧会找不到文件。
例如:
1、war类型项目下读取资源文件(classes)下的文件方式:
String path = getClass().getClassLoader().getResource("xx/xxx.xml").toString();
path = path.replace("\\", "/");
if (path.contains(":")) {
path = path.replace("file:/", "");
}
String input = FileUtils.readFileToString(new File(path), "UTF-8");
2、jar类型项目下读取资源文件(classes)下的文件方式:
InputStream inputStream = getClass().getResourceAsStream("/xx/xxx.xml");
final char[] buffer = new char[100];
final StringBuilder out = new StringBuilder();
final Reader in = new InputStreamReader(inputStream, "UTF-8");
try {
for (;;) {
int rsz = in.read(buffer, 0, buffer.length);
if (rsz < 0)
break;
out.append(buffer, 0, rsz);
}
}finally {
in.close();
}
System.out.println(out);