1. 读取web工程下的资源文件
方式一 获得绝对路径
String realpath = ServletContext.getRealPath("相对web应用的路径") ;
方式二 获得与文件相关联的流 (2.1与2.2是一样的)
2.1 InputStream in = ServletContext.getResourceAsStream("WEB-INF/classes/config.properties") ;
2.2 URL url = ServletContext.getResource("WEB-INF/classes/config.properties") ;
InputStream in = url.openStream();
2. 读取java工程下的文件
图示
// 不能相对虚拟机目录 不能用绝对路径
// 使用类加载器的方式读
ClassLoader classLoader = Demo.class.getClassLoader();
// 获得流InputStream in = classLoader.getResourceAsStream("a.txt") ;
// 获得绝对路径URL url = classLoader.getResource("a.txt") ;
类加载的方式:加载到内存之后进行读写
1. 不能读 类路径以外 的 文件
2. 不能读 较大 的 文件
3. 不能读 硬盘资源文件 的 修改
补充一点:(注意区分)
System.out.println(InputTest.class.getResource(""));
这种方式得到的路径是类所在包的url路径
System.out.println(InputTest.class.getResource("/"));
这种方式得到的路径是类路径的url路径