//创建属性对象 Properties pro=new Properties(); //指定载入数据源 InputStream is=new FileInputStream("src/pro.properties"); pro.load(is); //获取name属性的值 String name=pro.getProperty("name"); System.out.println(name); |
以上方法获取不到文件(文件在web工程的src目录下),错误。 原因:web工程交给tomcat管理,当前路径为tomcat的bin目录,因此无法用FileInputStream获取路径所对应的文件
解决方法一:(通过Servlet上下文获取对应文件的绝对路径,从而对应绝对路径的文件输入流) Properties pro=new Properties(); ServletContext servletContext = getServletContext(); String realPath=servletContext.getRealPath("WEB-INF/classes/pro.properties");//获取文件在服务器上的绝对路径E:\apache-tomcat-8.5.37\apache-tomcat-8.5.37\wtpwebapps\Frist1\ System.out.println(realPath); InputStream is=new FileInputStream(realPath);
解决方法二:(通过Servlet上下文获取对应文件的绝对路径直接获取资源流对象) Properties pro=new Properties(); ServletContext servletContext = getServletContext(); InputStream is=servletContext.getResourceAsStream("WEB-INF/classes/pro.properties"); pro.load(is);
解决方法三:(根据classload来获取工程下的资源 ,类加载器(JDBC)) Properties pro=new Properties(); InputStream is=this.getClass().getClassLoader().getResourceAsStream("/pro.properties");//获取类加载器在服务器上的对应文件的绝对路径E:\apache-tomcat-8.5.37\apache-tomcat-8.5.37\wtpwebapps\Frist1\WEB-INF\classes\ pro.load(is);
|