# Java 从类路径获取资源

# 介绍

从类路径(classpath)中加载资源文件(如配置文件、图片等)

# 示例

目录:

src/main/
  resources/
    1.txt
    images/2.png
  java/
    com/example/
      App.java
      3.json

加载资源:

public class App {
  public void loadResource() {
    // 从 resources 载入资源
    InputStream is_1 = this.getClass().getClassLoader() 
        .getResourceAsStream("1.txt");

    InputStream is_2 = this.getClass().getClassLoader() 
        .getResourceAsStream("images/2.png");


    // 从当前包载入资源    
    InputStream is_2 = this.getClass() 
        .getResourceAsStream("3.json");

  }
}

关闭资源:

// try-with-resources 自动管理需关闭的资源

try (InputStream is = this.getClass().getClassLoader().getResourceAsStream("1.txt")) {

  // getResourceAsStream 在资源未找到时返回 null,不会抛出异常
  if (is == null) {
    throw new RuntimeException("1.txt 未找到");
  }

} catch (Exception e) {
  e.printStackTrace();
}

# 参考

本章目录