Closed mysterin closed 5 years ago
ClassLoader.getResourceAsStream() 读取类路径下的文件, 要注意文件路径不是用 / 开头 Class.getResourceAsStream() 同样是读取类路径下的文件, 如果是 / 开头, 那么就去 classpath 的根路径下读文件; 如果不是 / 开头, 那么就回去类所在目录读取文件. 实际是通过调用 ClassLoader.getResourceAsStream() 来完成文件读取的. 可以参考下面 Class 的路径规则:
ClassLoader.getResourceAsStream()
/
Class.getResourceAsStream()
Class
private String resolveName(String name) { if (name == null) { return name; } if (!name.startsWith("/")) { Class<?> c = this; while (c.isArray()) { c = c.getComponentType(); } String baseName = c.getName(); int index = baseName.lastIndexOf('.'); if (index != -1) { name = baseName.substring(0, index).replace('.', '/') +"/"+name; } } else { name = name.substring(1); } return name; }
ClassLoader.getResourceAsStream()
读取类路径下的文件, 要注意文件路径不是用/
开头Class.getResourceAsStream()
同样是读取类路径下的文件, 如果是/
开头, 那么就去 classpath 的根路径下读文件; 如果不是/
开头, 那么就回去类所在目录读取文件. 实际是通过调用ClassLoader.getResourceAsStream()
来完成文件读取的. 可以参考下面Class
的路径规则: