Java中读取文件的几种路径配置

获取配置文件的两种方式区别

ClassLoader.getSystemClassLoader().getResourceAsStream()
//ClassLoader.getSystemClassLoader().getResourceAsStream("String pathName") 
// 此种方式读取文件位置默认为src目录下(在main方法和在@Test方法中路径一样)
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Resource\\druid.properties");
FileInputStream()
//FileInputStream("String pathName") 
// 在main方法中,此种方式读取文件位置默认为Project目录下
// 在@Test方法中,此种方式读取文件位置默认为Module目录下
FileInputStream is = new FileInputStream("JDBC\\src\\Resource\\druid.properties");

getResourceAsStream的区别

  1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
  2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。
  3. ServletContext. getResourceAsStream(String path):默认从WebAPP根目录下取资源,Tomcat下path是否以’/'开头无所谓。
上一篇:Java基础(018):Class.forName和ClassLoader的区别


下一篇:大厂高频面试题-请把Java的双亲委派机制说清楚!