写在前面:getResourceAsStream有两种方式
1. 第一种:Class.getClassLoader().getResourceAsStream(),类加载器默认是从classPath路径加载资源
2. 第二种:Class.getResourceAsStream()是从当前类的目录下加载
下面是idea中classPath路径的设置
项目结构的右边列出了4个项目中的文件类型:
- Source Folders:表示的都是代码源文件目录,生成的class文件会输出到target->classess文件夹中,但是里面的源文件不会复制到target->classes文件夹中
- Test Source Folders: 表示的都是测试代码源文件目录,生成的class文件同样会输出到target-classess文件夹中,并且里面的源文件不会复制到target->classes文件夹中
- Resource Folders: 表示的都是资源文件目录,这些目录里面的文件会在代码编译运行被直接复制到target->classess文件夹中
- Excluded Folders:表示的是target文件夹生成的位置,target是IDEA编译后的一些class信息存放地,里面有子目录target->classes来存储编译后的字节码。
- target->classes即为classpath路径位置,任何我们需要在classpath:前缀中获取的资源都必须在target->classes文件夹中找到,否则将出现java.io.FileNotFoundException的错误信息。