类路径下资源文件的加载
通常使用
Class实例或ClassLoader实例来加载路径下的资源文件
ClassName.class.getResource("") /* 定位到当前类目录 */
ClassName.class.getResource("fileName") /* 从当前类目录加载 xxx 文件,资源文件需与类处在同一目录 */
ClassName.class.getResource("/") /* 定位到 classpath 根目录 */
ClassName.class.getResource("/fileName") /* 从 classpath 根目录加载 xxx 文件 */
ClassName.class.getClassLoader().getResource("") /* 定位到 classpath 根目录 */
ClassName.class.getClassLoader().getResource("fileName") /* 从 classpath 根目录加载 xxx 文件 */
ClassName.class.getClassLoader().getResource("/") /* 无法定位目录 */
ClassName.class.getClassLoader().getResource("/fileName") /* 无法加载 */
总结
使用 ClassLoader 加载资源,会以 classpath 根目录的相对路径加载资源,路径不可以 / 开始,否则无法正确加载资源。
使用 Class 加载资源,最终是使用 ClassLoader 加载资源。资源路径以 / 开头,会删除 / ,并通过 ClassLoader 从 classpath 根目录开始找文件,不以 / 开头,会加上当前类相对 classpath 的路径(包名转换成路径)从 classpath 根目录开始找文件。