Skip to main content

类路径下资源文件的加载

通常使用 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 加载资源。资源路径以 / 开头,会删除 / ,并通过 ClassLoaderclasspath 根目录开始找文件,不以 / 开头,会加上当前类相对 classpath 的路径(包名转换成路径)从 classpath 根目录开始找文件。